newuser 发表于 2010-12-14 09:08:43

[已解决]正则表达式的请教?

本帖最后由 newuser 于 2010-12-15 08:15 编辑

(?=pattern)        正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
例有个字符串:
"this Windows95 andWindows2000,Windows3.1 not WindowsNT
this Windows95 andWindows2000,Windows3.1 not WindowsNT"
那么,在第一个出现的Windows95 匹配之后,最后一次匹配如何确定?是第一个出现的Windows2000还是第一个出现的WindowsNT?
我想应该是第一个出现的Windows2000,不知是否理解正确?
在最后一次匹配之后立即开始下一次匹配的搜索:是不是该从"第一行的WindowsNT"继续匹配?

lsqyx528 发表于 2010-12-14 10:09:43

你是想匹配啥呀?没明白。。。

newuser 发表于 2010-12-14 11:09:25

回复 2# lsqyx528
我不明白上面代码段中的话,所以以我的理解举个例子来问有关的问题.

newuser 发表于 2010-12-14 15:08:27

回复 1# newuser
顶一下,别沉了!

yarsye 发表于 2010-12-14 16:03:57

不懂 没清楚

newuser 发表于 2010-12-14 17:09:32

回复 5# yarsye (?=pattern)      正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
就是我不明白代码中的这段话,能举个例子让我明白它吗 ?

afan 发表于 2010-12-14 18:20:25

“最后一次匹配”其实就是上一次成功匹配的末尾~
字符串:
"this Windows95 andWindows2000,Windows3.1 not WindowsNT
this Windows95 andWindows2000,Windows3.1 not WindowsNT"
表达式:
Windows(?=95|98|NT|2000)
第一次成功匹配的是“Windows95”中的“Windows”,相对下一次匹配,此次成功匹配的位置就是“最后一次匹配”的意思

newuser 发表于 2010-12-15 07:59:22

回复 7# afan
啊!我还以为95/NT/2000/98都匹配后再接着下一次匹配呢!
谢谢.
页: [1]
查看完整版本: [已解决]正则表达式的请教?