您当前的位置:首页 > 计算机 > 编程开发 > Other

(pattern),(?:pattern),(?=pattern)(?!pattern)不明白,让我豁然开朗的文章

时间:04-02来源:作者:点击数:

学习正则表达式时,这几个(pattern),(?:pattern),(?=pattern),(?!pattern)不明白

* (pattern)匹配pattern并捕获该匹配的子表达式.可以使用 $0...$9属性从结果"匹配"集合中检索捕获的匹配.若要匹配括号字符(),请使用"\("或者"\)".

* (?:pattern)匹配pattern但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配.这对于用"或"字符(|)组合模式部件的情况很有用.

例如,与"industry|industries"相比,"industr(?:y| ies)"是一个更加经济的表达式.

* (?=pattern)执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串.它是一个非捕获匹配,即不能捕获供以后使用的匹配.

例如,"Windows (?=95| 98| NT| 2000)"与"Windows 2000"中的"Windows"匹配,但不与"Windows 3.1"中的"Windows"匹配.

预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后.

* (?!pattern)执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串.它是一个非捕获匹配,即不能捕获供以后使用的匹配.

例如,"Windows (?!95| 98| NT| 2000)"与"Windows 3.1"中的"Windows"匹配,但不与"Windows 2000"中的"Windows"匹配.

预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后.

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门