代码
说明
匹配exp前面的位置。 如 "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do"; 匹配exp后面的位置。 如 "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing"; 匹配后面跟的不是exp的位置。 如 "123abc" 正则 "\d{3}(?!\d)"匹配3位数字后非数字的结果 匹配前面不是exp的位置。 如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<\d)123"
(exp)
匹配exp,并捕获文本到自动命名的组里。
(?<name>exp)
匹配exp,并捕获文本到名称为name的组里。
(?:exp)
匹配exp,不捕获匹配的文本,也不给此分组分配组号以下为零宽断言。
(?=exp)
(?<=exp)
(?!exp)
(?<!exp)
得到上面秘籍后我们可以小试牛刀...
小试牛刀
在C#中使用正则表达式主要是通过Regex类来实现。命名空间:using System.Text.RegularExpressions。
其中常用方法:
名称
说明
IsMatch(String, String)
指示 Regex 构造函数中指定的正则表达式在指定的输入字符串中是否找到了匹配项。
Match(String, String)
在指定的输入字符串中搜索 Regex 构造函数中指定的正则表达式的第一个匹配项。
Matches(String, String)
在指定的输入字符串中搜索正则表达式的所有匹配项。
Replace(String, String)
在指定的输入字符串内,使用指定的替换字符串替换与某个正则表达式模式匹配的所有字符串。
Split(String, String)
在由 Regex 构造函数指定的正则表达式模式所定义的位置,拆分指定的输入字符串。
在使用正则表达式前我们先来看看“@”符号的使用。
学过C#的人都知道C# 中字符串常量可以以@ 开头声名,这样的优点是转义序列“不”被处理,按“原样”输出,即我们不需要对转义字符加上 \ (反斜扛),就可以轻松coding。如:
复制代码 代码如下:
string filePath = @"c:\Docs\Source\CK.txt" // rather than "c:\\Docs\\Source\\CK.txt"
如要在一个用 @ 引起来的字符串中包括一个双引号,就需要使用两对双引号了。这时候你不能使用 \ 来转义爽引号了,因为在这里 \ 的转义用途已经被 @ “屏蔽”掉了。如:
复制代码 代码如下:
string str=@"""Ahoy!"" cried the captain." // 输出为: "Ahoy!" cried the captain.
字符串匹配:
在实际项目中我们常常需要对用户输入的信息进行验证。如:匹配用户输入的内容是否为数字,是否为有效的手机号码,邮箱是否合法....等。
实例代码: