【问题标题】:Regex: Non-capture group正则表达式:非捕获组
【发布时间】:2018-09-08 16:12:01
【问题描述】:

[正则表达式初学者] 在 Sublime Text 3 中,我如何找到,比如说,aa,使得在左右两边没有a,并将其替换为aaa?我试过了:

(?:[^a])(aa)(?:[^a])

但是选择了四个字符。如何只选择aa

【问题讨论】:

  • 使用(?<!a)aa(?!a)
  • 使用消极的后视。
  • @Wiktor 谢谢。请您将其声明为答案,以便问题看起来得到回答。

标签: regex sublimetext3


【解决方案1】:

您可以使用否定lookbehind and lookahead的组合:

(?<!a)aa(?!a)

如果a 紧邻当前位置的左侧,(?&lt;!a) 匹配失败;如果a 紧邻当前位置右侧,(?!a) 匹配失败。

参见PCRE regex demo(SublimeText3 使用 PCRE 引擎)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多