正则表达式 向前查看 和 (? 的用法

向前查看

将 <<q(?=u)i>> 应用到 “quit”

    a. 当前字符是 “q”,<<q>>成功匹配“q”

    b. 当前字符是 “u”,向前查看<<(?=u)>>成功匹配"u"

    c. 当前字符是 "i”,但是,现在 向前查看 完成了。于是,正则引擎 告诉字符串 “请将当前字符回退一个”。于是,当前字符 从“i”回退到“u”

    d. 当前字符是“u”,引擎继续处理下一个正则符号<<i>>。结果发现<<i>> 和 当前字符“u” 不匹配

    e. 匹配失败了

    f. 开始回溯。当前字符变成“u”,然后和 正则<<q>>进行匹配

    g. ... ...

<<(?>> 的用法

新增的 “非捕获型括号”、“顺序环视” 都需要新的表达方式,所以,Larry 采用了我们今天使用到 <<(?x...)>>表示法

<<(?x...)>>的用法共有 11

零长度断言(Zero-WidthAssertions)

1-2:“顺序环视(lookahead)”:<<(?=...)>>, <<(?!...)>>

3-4:“逆序环视(lookbehind)”:<<(?<=...)>>,<<(?<!...)>>

分组、捕获、条件判断、控制(Grouping,Capturing, Conditionals, and Control)

5:“非捕获型括号(non-capturingparentheses)”:<<(?:...)>>

6:“固化分组(atomicgrouping)”:<<(?>...)>>

7: “命名捕获(namedcaputuring group)” (Java7将会支持) <<(?<Name>...)>>

8: “条件判断(conditional)” (Java不支持):<<(?ifthen|else)>>

注释、模式修饰词

9: “模式修饰词(Modemodifier)”:<<(?modifier)>>,例如 (?i) 和(?-i)

10: “模式作用范围(Mode-modifiedspan)”:<<(?modifier:...)>>,例如(?i:...)

11: “注释(Comments)”:<<(?#...)>> 和 #...

 

 

 

 

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值