,在C#语言中\是转译字符,要想字符串中的\不转译,就需要使用\\或者在整个字符串的开始加上@标记,即上面等价与
@”\b(?\d{1,2})/(?\d{1,2})/(?\d{2,4}\b”)
\b -- 是一种特殊情况。在正则表达式中,除了在 [] 字符类中表示退格符以外,\b 表示字边界(在 \w 和 \W 字符之间)。在替换模式中,\b 始终表示退格符
(?\d{1,2}) – 构造一个名为month的分组,这个分组匹配一个长度为1-2的数字
/ -- 匹配普通的/字符
(?\d{1,2}) --构造一个名为day的分组,这个分组匹配一个长度为1-2的数字
/ -- 匹配普通的/字符
(?\d{2,4}\b”) --构造一个名为year的分组,这个分组匹配一个长度为2-4的数字
这里还不能够看出这些分组的作用,我们接着看这一句
${day}-${month}-${year}
${day} – 获得上面构造的名为day的分组匹配后的信息
- -- 普通的-字符
${month} --获得上面构造的名为month的分组匹配后的信息
- -- 普通的-字符
${year} --获得上面构造的名为year的分组匹配后的信息
举例来说:
将形如04/02/2003的日期使用例3种的方法替换
(?\d{1,2}) 分组将匹配到04由${month}得到这个匹配值
(?\d{1,2}) 分组将匹配到02由${day}得到这个匹配值
(?\d{1,2}) 分组将匹配到2003由${year}得到这个匹配值
了解了这个例子后,我们在来看第4个例子就很简单了。
第4个例子的正则
^(?\w+)://[^/]+?(?:\d+)?/
^ -- 表示限定匹配开始于字符串的开始
(?\w+) – 构造一个名为proto的分组,匹配一个或多个字母
: -- 普通的:字符
// -- 匹配两个/字符
[^/] – 表示这里不允许是/字符
+? – 表示指定尽可能少地使用重复但至少使用一次匹配
(?:\d+) – 构造一个名为port的分组,匹配形如:2134(冒号+一个或多个数字)
? – 表示匹配字符出现0次或1次
/ -- 匹配/字符
最后通过${proto}${port}来获取两个分组构造的匹配内容
(有关Regex对象的用法,参考
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemTextRegularExpressionsRegexMembersTopic.htm)
上一页 [1] [2]