元字符:
基本元字符
. 表示任意一个非换行字符
[ ] 集合匹配。表示匹配一个出现在方括号中的一个字符
| 或 a|b 优先级最低
() 同数学,提高优先级
限定元字符
* 紧跟在 * 前面的字符出现任意次
+ 紧跟在 + 前面的字符出现任意次,但至少1次
? 紧跟在 ? 前面的字符出现1次或者不出现
{ n } 紧跟前面的字符,出现n次 如[01234556779]{11} 出现0-9的数字出现11次
{ n, } +相当于{1, } *相当于 {0, }
{ n,m } 紧跟前面的字符,出现至少n次 ,最多m 次
首尾元字符
^ 以^后面的字符开始
$ 以$前面的字符结尾
简写形式
\d 查找数字字符
\D 查找非数字字符
\w 查找单词字符。 注:在C#中包括中文
\W 查找非单词字符。
\s 查找空白字符。
\S 查找非空白字符。
写正则:
首先明确要做什么?
找规律,看看那些是必须有的,哪些是不动
利用.、+、()等进行写正则
然后再验证、再修改
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
身份证:[0-9]{17}[X0-9]|[0-9]{15}
邮箱: [a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.[a-zA-Z0-9]+)+
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
使用C#操作正则表达式
->命名空间:System.Text.RegularExpression;
->Regex
bool IsMatch(正常字符串,正则表达式);
Match Match(正常字符串,正则表达式);
MatchCollection Matchs(正常字符串,正则表达式);
string Replace(正常字符串,正则表达式,替换字符串);
C#中使用MatchCollection 收集到每一个匹配到的结果,如:
MatchCollection mc = Regex.Matches(str, @"〔(.+)〕");
//str本将要匹配的文本,后面为 正则表达式。
遍历MatchCollection 即可得到每一个匹配的结果
foreach (Match m in mc)
{
string s = m.Groups[1].Value;
//string tmp = m.ToString().Replace("〔", "").Replace("〕", "");
}
->可以直接使用m,将不需要的内容进行替换
->或者使用分组,匹配正则表达式中()中的值。
Regex.Replace(string input ,string pattern,string replacement)
在指定的字符串内,使用指定的替换字符串替换与正则表达式匹配的字符串
string str = "如果你想学习.NET那么就赶快点击http://net.itcast.cn,这里有公开课,可以点击http://www.itcast.cn";
string res = Regex.Replace(str, @"(http.+?itcast\.cn)", "<a href=\"$0\">$1</a>");
File.WriteAllText("1.html", res, Encoding.Default);
//替换后网址被a标签包裹,变成超链接<pre name="code" class="csharp">
//其中涉及到 $1 为正则表达式分组匹配到的第1项结果,根据需要还可以使用$0,$1,$2……
在指定的字符串内,使用System.Text.RegulatorExpressions.MatchEvaluator委托返回的字符器替换与正则表达式匹配的字符串
static void Main(string[] args)
{
string text = "i have 200 dollars";
string result = Regex.Replace(text, @"\d+", new MatchEvaluator(CapText));
Console.WriteLine("result=[" + result + "]");
Console.ReadKey();
}
static string CapText(Match m)
{
string x = m.ToString();
string result = (int.Parse(x) * 2).ToString();
return result;
}
//new MatchEvaluator(CapText)使用委托操作与正则表达式匹配的数据,并返回。用于替换与正则表达式匹配的字符串
//结果: i have 400 dollars