c# 正则表达式笔记
c# 正則表達(dá)式筆記
估計(jì)要寫(xiě)幾天
看得一個(gè)不錯(cuò)的正則教程包括字符串教程 C#字符串和正則表達(dá)式參考手冊(cè).pdf
?
???? 正則所需要的命名空間是 using System.Text.RegularExpressions
???? 它包含了8個(gè)類(lèi),用得最多是的Regex;
Regex不僅可以用來(lái)創(chuàng)建正則表達(dá)式,而且提供了許多有用的方法。
創(chuàng)建一個(gè)Regex對(duì)象
new Regex(string pattern)
???? new Regex(string pattern,RegexOptions options)
???? 第一個(gè)參數(shù)是個(gè)字符串?? 第二個(gè)參數(shù)正則配置的選項(xiàng) 有以下一些選項(xiàng)
- IgnoreCase???????????????? //是匹配忽略大小寫(xiě)?? ?? 默認(rèn)情況區(qū)分大小寫(xiě)
- RightToLeft???????????????? //從右到左查找字符串?? 默認(rèn)是從左到右
- None????????????????????????? //不設(shè)定標(biāo)志? 這是默認(rèn)選項(xiàng),就是不設(shè)置第2個(gè)參數(shù)? 表示區(qū)分大小寫(xiě) 從左到右
- MultiLinc??????????????????? //指定了^和$可以匹配行的開(kāi)頭和結(jié)尾,也就是說(shuō)使用了換行分割,每一行能得到不同的匹配
- SingleLine???????????????? //規(guī)定特殊字符"."匹配任一字符,換行符除外. 默認(rèn)情況下特殊字符"."不匹配換行.(啥意思 都不匹配換行這個(gè)參數(shù)有啥用? 沒(méi)看懂)
IgnoreCase的例子
string test = "Abcccccc";Regex reg = new Regex("abc");
Console.WriteLine(reg.IsMatch(test)); //false
Regex reg1 = new Regex("abc",RegexOptions.IgnoreCase); //不區(qū)分大小寫(xiě)
Console.WriteLine(reg1.IsMatch(test));//true
RightToLeft的例子
string test = "vvv123===456vvv";Regex reg = new Regex("\\d+");// 123 從左到右 匹配連續(xù)數(shù)字
Console.WriteLine(reg.Match(test));
Regex reg1 = new Regex("\\d+",RegexOptions.RightToLeft);
Console.WriteLine(reg1.Match(test));// 456 從右到左 匹配連續(xù)數(shù)字
MultiLinc的例子
StringBuilder input = new StringBuilder();input.AppendLine("A bbbb A");
input.AppendLine("C bbbb C");
string pattern = @"^\w";
Console.WriteLine(input.ToString());
MatchCollection matchCol = Regex.Matches(input.ToString(), pattern, RegexOptions.Multiline);
foreach (Match item in matchCol)
{
Console.WriteLine("結(jié)果:{0}", item.Value);
}
?
IsMatch()
?????? 可以用來(lái)測(cè)試字符串,看他是否匹配正則表達(dá)式的模式.如果發(fā)現(xiàn)了一次匹配,就返回True.IsMatch有個(gè)靜態(tài)方法重載
Regex.IsMatch(string str,string pattern);
string str = "abcbbbbbbbb";string reg = @"^abc";
Console.WriteLine(Regex.IsMatch(str,reg ));//靜態(tài)的重載方法
Regex pattern = new Regex("^abc");
Console.WriteLine(pattern.IsMatch(str)); //生成對(duì)象上的方法
?
Replace()
??????? 替換字符串一個(gè)匹配的模式,也有一個(gè)靜態(tài)的重載方法,replace變體方法很多,我只記錄我看到的
replace(string input ,string pattern,int count,int start) 第3個(gè)參數(shù)是總共替換幾個(gè),第4分參數(shù)是從字符串的什么位置開(kāi)始替換
string str = "123456abc";Regex pattern = new Regex(@"\d+");
Console.WriteLine(pattern.Replace(str,"6666"));
string pattern1 = @"\d+";
Console.WriteLine(Regex.Replace(str,pattern1,"6666"));
string str1 = "asd,sss,asd,asdf,jjjj,cccc";
Regex pattern2 = new Regex(@"\w+");
Console.WriteLine(pattern2.Replace(str1, "v5v5", 2));
Console.WriteLine(pattern2.Replace(str1, "v5v5", 2,8));
// Console.WriteLine(Regex.Replace(str1, @"\w+", "v5v5", 2)); 靜態(tài)方法好像不行 會(huì)報(bào)錯(cuò) 哈哈
Match()
????? 獲得匹配的內(nèi)容(只是一次的 MatchCollection可以獲得所有的的匹配的集合)
????? 生成的對(duì)象上的方法?? 的用法
????? reg.Match(string input,int start,int length)
????? 第一個(gè)參數(shù)是要處理的字符串? 第二哥參數(shù)開(kāi)始的位置? 第3個(gè)參數(shù)是需要匹配的長(zhǎng)度。第2第3個(gè)參數(shù)可以不需要
????? 靜態(tài)方法? Regex.Match(string input , string pattern,RegexOptions options)
????? 第3個(gè)參數(shù)可以不要?
string str = "vchaha vcoo vclielie vbguale vfgg vckk";Regex pattern = new Regex(@"vc\w*");
Match matchMode = pattern.Match(str);
while (matchMode.Success)
{
Console.WriteLine(matchMode.Value);
matchMode = matchMode.NextMatch();
}
Console.WriteLine("-----------------------------------");
Match matchMode1 = Regex.Match(str, @"vc\w*");
while (matchMode1.Success)
{
Console.WriteLine(matchMode1.Value);
matchMode1 = matchMode1.NextMatch();
}
Match類(lèi)的一些方法
- NextMatch ? ? ?? 返回下一個(gè)成功匹配的match對(duì)象
- Result
- Value?????????????? 返回匹配的字符串
- Length???????????? 匹配的長(zhǎng)度
- Index?????????????? 第一個(gè)匹配內(nèi)容在字符串中的起始位置
- Groups???????????? 返回一個(gè)分組對(duì)象集合
- Success??????????? 根據(jù)是否匹配成功返回ture or false
?MatchCollection()
??????????? Regex.Matchs會(huì)返回MatchCollection類(lèi),這個(gè)集合包含了所有的Match的集合
string input = "hahaha 123xiaodi 55nihao 66chifanlema ccc333 ccc";Regex pattern = new Regex(@"\d+[a-z]+",RegexOptions.IgnoreCase);
MatchCollection matchsMade = pattern.Matches(input);
foreach (Match item in matchsMade)
{
Console.WriteLine(item.Value);
}
轉(zhuǎn)載于:https://www.cnblogs.com/minlecun/archive/2011/12/06/2277399.html
總結(jié)
以上是生活随笔為你收集整理的c# 正则表达式笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【jquery】基于 jquery 实现
- 下一篇: C# 温故而知新:Stream篇(六)