前瞻(Lookahead)
正前瞻(Positive Lookahead)
正前瞻用于确保某一子模式在特定位置之后出现,但不包含在最终匹配中。使用语法 (?=...)。
示例:
匹配紧跟在 foo 之后的 bar,但不包括 foo 在结果中:
foo(?=bar)
在字符串 foobar 中,将匹配 foo(但不包括 bar)。
负前瞻(Negative Lookahead)
负前瞻用于确保某一子模式在特定位置之后不出现。使用语法 (?!...)。
示例:
匹配不跟在 foo 之后的 bar:
foo(?!bar)
在字符串 foobaz 中,将匹配 foo,因为 foo 后面没有 bar。
后顾(Lookbehind)
正后顾(Positive Lookbehind)
正后顾用于确保某一子模式在特定位置之前出现,但不包含在最终匹配中。使用语法 (?<=...)。
示例:
匹配 bar,但要求 bar 之前是 foo:
(?<=foo)bar
在字符串 foobar 中,将匹配 bar,但不包括 foo。
负后顾(Negative Lookbehind)
负后顾用于确保某一子模式在特定位置之前不出现。使用语法 (?<!...)。
示例:
匹配不跟在 foo 之前的 bar:
(?<!foo)bar
在字符串 bazbar 中,将匹配 bar,因为 bar 前面没有 foo。