负向零宽断言
例如:/b/w*q[^u]/w*/b 匹配包含后面不是字母u的字母q的单词
[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。
零宽度负预测先行断言(?!exp),断言此位置的后面不能匹配表达式exp
例: /b/w*q[^u]/w*/b-------/b/w*q(?!u)/w*/b (修改上个例子)
例:/d{3}(?!/d)-----匹配三位数字,而且这三位数字的后面不能是数字
/b((?!abc)/w)+/b---配不包含连续字符串abc的单词
(?<=<(/w+)>).*(?=<///1>)---匹配不包含属性的简单HTML标签内里的内容
注释:
(?#comment)来包含注释。
例如:2[0-4]/d(?#200-249)|25[0-5](?#250-255)|[01]?/d/d?(?#0-199)
贪婪与懒惰
贪婪匹配:例如a.*b,它将会匹配最长的以a开始,以b结束的字符串
懒惰:与贪婪匹配,在限定符后加问号?
例如:a.*?b----匹配最短的,以a开始,以b结束的字符串
懒惰限定符:
*?------重复任意次,但尽可能少重复
+?------重复1次或更多次,但尽可能少重复
??------重复0次或1次,但尽可能少重复
{n,m}?---重复n到m次,但尽可能少重复
{n,}?----重复n次以上,但尽可能少重复
复习: 零宽度正回顾后发断言(?<= exp ),当子表达式在此位置的左侧匹配时才继续匹配
例:(?<=19)99---与跟在19后面的99的实例匹配.此构造不会回溯
零宽度正预测先行断言 (?= exp) 仅当子表达式在此位置的右侧匹配时才继续匹配
例如:例如,/w+(?=/d)---- 与后跟数字的单词匹配
我明白,我要的就是这种心态:十年磨一剑