字符
说明
(expression)
匹配字串expression,并将匹配的文本保存到自动命名的组里
(?<name>expression)
匹配字串expression,并将匹配的文本按name命名。name不能包含符号,也不能以数字开头。
(?:expression)
匹配字串expression,不保存匹配的文本,也不保存此组分配组号。
(?=expression)
匹配字串expression前面的位置。
(?!expression)
匹配后面不是字串expression的位置。
(?<=expression)
匹配字串expression后面的位置。
(?<!expression)
匹配前面不是字串expression的位置。
(?>expression)
只匹配字串expression一次。
限定符:元字符正常情况下只能匹配一个位置或一个字符,如果要匹配多个、一个或零个的时候,就要使用限定符。
分组:只有加小括号的才会被定义为分组,当然不加小括号的这个整个字符组(或者成为匹配项的表达式)可以使用$0来引用。
负向零宽度断言(使用分组里面的定义)
递归匹配(dotNet支持)
(?<name>expression) 将expression匹配的内容命名为name,并压入堆栈
(?<-name>expression) 从堆栈中弹出最后压入的命名为name的匹配内容。如果堆栈为空,则匹配失败
(?(name)yes|no) 如果堆栈上存在命名为name的匹配内容,则继续匹配yes部分的表达式,否则匹配no部分的表达式
(?!) 零宽度负向先行断言,由于没有后缀表达式,所以匹配总是失败。
\([^()*(((?<bracket>\()[^()]*)+((?<-bracket>\))[^()]*)+)*(?(bracket)(?!))\)
上面的这个正则表达式可以匹配算数表达式!
//去除所有非形容词和音标
([a-z]{1,}(?<!adj)\.[^\n\r\t]{1,}\t)|([^\t]{1,}\],)
[a-z]{1,}(?<!((adv)|(adj)))\.[^\n\r\t]{1,}
匹配任意闭合HTML标签的正则表达式:
<(?<HtmlTag>[\w]+)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
匹配多个(种)标签
<(?<HtmlTag>(div|span|h1))[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
这个正则匹配任意id为footer的HTML标签
<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>["']?)footer(?(Quote)\k<Quote>)[^>]*?(/>|>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>)
\b[a-zA-Z]{1,}(?<!(es)|(ed)|(ing))\b
//该段主要是用来提取单词的一个表达式,后面的(?<!exp)是用来排除那几个不是这些后缀的表达式,与(?!)有着本质的不同,网上一些不懂得用的
//人烂写的!!!
没有评论:
发表评论