第一次接触到正则表达式的扩展表示法,云里雾里
(?:\w+\.)* 以句点作为结尾的字符串,例如“google.”、“twitter.”、“facebook.”,但是这些匹配不会保存下来供后续的使用和数据检索
(?#comment) 此处不做匹配,只是作为注释
(?=.com) 如果一个字符串后面跟着“.com”才做匹配操作,并不使用任何目标字符串
(?!.net) 如果一个字符串后面不是跟着“.net”才做匹配操作
(?<=800-) 如果字符串之前为“800-”才做匹配,假定为电话号码,同样,并不使用任何输入字符串
(?<!192\.168\.) 如果一个字符串之前不是“192.168.”才做匹配操作,用来过滤掉一组C类IP地址
(?(1)y|x) 如果一个匹配组1存在,就与y匹配,否则与x匹配
总结来看,四种断言:
正向前行匹配(?=...) ##以某个字符串结尾
负向前行匹配(?!...) ##不以某个字符串结尾
正向后行匹配(?<=...) ##以某个字符串开头
负向后行匹配(?<!...) ##不以某个字符串开头
所谓的前行(lookahead)和后行(lookbehind),其实就是向前看和向后看的意思