最简单的正则表达式
最简单的正则表达式
hi 能匹配的字符串(举例)hi him his this philips
只想要这个结果:\bhi\b \b[Hh]i\b \b(H|h)i\b 那么只匹配:hi
\d+匹配数字串 匹配结果:10000,1234567,222222,8888888等等
"\b"匹配一个单词的边界
表达式:\bhi\b 能匹配:hi
"\B"匹配一个单词的非边界
表达式:\Bhi\B 能匹配:hi this
"\d"匹配一个数字字符
表达式:\d 能匹配:12345
"\D"匹配一个非数字字符
表达式:\D 能匹配:A a
"\w"匹配字母/数字/下划线
表达式:\w 能匹配:123abc_
"\W"匹配除字母/数字/下划线
表达式:\W 能匹配:@#$%
"^"代表字符串的开头
表达式:^hi 能匹配:hi him hidden
"$"代表字符串的结束
表达式:hi$ 能匹配:hi chi Orochi
表达式:^hi$ 只能匹配:hi
方括号"[ ]"匹配指定一堆字符中的一个。
表达式:^[a-z]at$ 能匹配的字符串(举例):cat mat zat
表达式:^[A-Za-z]at$ 能匹配的字符串(举例): Cat cat Mat
表达式:^[aeiou]at$ 能匹配的字符串(举例):aat eat iat
方括号"[^]"不匹配这个集合中任何一个字符。
表达式:^[^xyz]at$ 不能匹配的字符串:xat yat zat
"+"表示前一模式可以被重复1次或n次。
表达式:^go+gle$ 能匹配的字符串(举例):gogle google goooooogle
表达式:^g[aeiou]+gle$ 能匹配的字符串(举例):gagle gegle geagle geaeaipueagle
"*"表示前一模式可以被重复0次或n次。
表达式:^go*gle$ 能匹配的字符串(举例):ggle google gooooogle
"?"表示前一模式可以被匹配0次或1次。
表达式:^go?gle$ 能匹配的字符串(举例):ggle gogle
"{x}"表示前一模式模式可以被重复x次。
表达式:^go{2}gle$ 能匹配的字符串 google
"{x,y}"表示前一模式模式可以被重复x到y次。
表达式:^go{2,4}gle$ 能匹配的字符串(仅3个):google gooogle goooogle
"{x,}"表示前一字符模式可以被重复至少x次。
表达式:^go{2,}gle$ 能匹配的字符串(举例):google gooogle gooooooogle
"( )"可以指定一堆字符来匹配一个模式。分组
表达式:^(very )*large$ 能匹配的字符串(举例):large very very large very large
分支"|"用来指定几个规则只要匹配一个规则即成匹配。
表达式:^com$|^org$|^net$ 能匹配的字符串(仅3个):com org net
表达式:^abc.(com|org|net)$ 能匹配的字符串(仅3个):abc.com abc.org bac.net
如果要匹配"[""^""+"")"等等有特殊含义的字符,可以用"\"做转义。
表达式:^1\*\(2\+3\)=6$ 能匹配的字符串(仅1个):1*(2+3)=6
其它
- "^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\\w+$" //由数字、26个英文字母或者下划线组成的字符串 - [\u4e00-\u9fa5] 汉字中的任意一个汉字
- ^0\d{2}-\d{8}$
- ^[0-9]*$
- ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。
表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.
(C# Regex中replace方法的简单实用)
/*
使用正则替换字符串
*/
string msg = "你aaa好aa哈哈a";
msg = Regex.Replace(msg, @"a+", "A");
Console.WriteLine(msg); //你A好A哈哈A
/*
替换中使用提取组
在替换中也是可以使用提取组的 $表示提取组 $1表示组1 (引用正则表达式提取的字符串)
*/
string msg2 = "Hello 'welcome' to 'china'";
msg2 = Regex.Replace(msg2, "'(.+?)'", "[$1]");
Console.WriteLine(msg2); //Hello [welcome] to [china]
/*
隐藏手机号码
*/
string msg3 = "文天祥12345678911";
msg3 = Regex.Replace(msg3, "([0-9]{4})[0-9]{4}([0-9]{3})", "$1****$2");
Console.WriteLine(msg3); //文天祥1234****911
/*
隐藏邮箱名
*/
string msg4 = "123456789@qq.com";
msg4 = Regex.Replace(msg4, "(.+?)@", "*****");
Console.WriteLine(msg4); //*****qq.com