Loading...
  所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> 正则表达式之Negative lookahead详解
回复

正则表达式之Negative lookahead详解

作者:ade 时间:2009-10-22 19:36:32 收藏 编辑

Negative lookahead,语法格式:(?!pattern)


一般人解释如下:
负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

理解起来还是很别扭,看几个例子你就明白了

表达式1:
^historycreator(?!21)\w+$

如果输入:historycreator21h
结果为空,不匹配

如果输入:historycreatorhelloworldh
结果为:historycreatorhelloworldh

表达式2:
^historycreator(?!21)$

这个式子只有输入historycreator也才匹配并输出historycreator,否则怎么匹配都为空,为什么?

这个式子本身就是用来匹配historycreator的,开始为h,结尾为r,然后字符串就结束了,所以预取不到任何字符。

如果这个表达式去掉$,则跟表达式1有点类似了。

还不明白的话就问。

高级回复

操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
  首页
Copyright 2006-2012 HistoryCreator.com Powered By: BBSGood 5
吉ICP备06005902号