【问题标题】:OR Without Capture Regex in Notepad++或没有在记事本++中捕获正则表达式
【发布时间】:2020-02-13 01:06:25
【问题描述】:

我想在 Notepad++ 中使用 OR 运算符,但不捕获找到的匹配项。那可能吗?根据我的实验,您需要将 OR 表达式放在括号内,这意味着 Notepad++ 会捕获它们。

示例用例

许多可能的用例之一是,我们可能希望使用 OR 运算符来匹配任何字符,包括换行符,但不希望全局启用“匹配换行符”。我们希望能够在不一直捕获组的情况下做到这一点。此处讨论:Regex not matching text with newlines in Notepad++

【问题讨论】:

  • 要使组不被捕获,请使用(?:[pattern]) 而不是([pattern])。在这种情况下,(?:a|b)
  • 哦,认真的吗?就这么简单???谢谢
  • 谢谢大家。我在一些答案中看到了这一点,并将其误认为是前瞻。这样可行。干杯。
  • 没问题,很高兴能帮上忙!发布为答案,以便我们可以解决这个问题:)
  • 为什么不匹配 [ab]+ 并用空格替换?之前和之后的组是可选的,将在替换中。

标签: regex notepad++


【解决方案1】:

要使组不被捕获,请使用

(?:[pattern]) 

而不是

([pattern]) 

在这种情况下:

(?:a|b)

【讨论】:

    【解决方案2】:

    使用 Notepad++ 匹配任何字符,包括换行符:

    1. 检查. matches newline
    2. 使用[\s\S][\d\D][\w\W]
    3. (?s) 为正则表达式(或仅它的一部分)加上前缀,并用(?-s) 停止

    【讨论】:

    • 感谢它,但这不是我在这里要问的问题......
    • @ColmBhandal:您在问题中说:“假设我们想使用 OR 运算符来匹配任何字符,包括换行符,”我的帖子回答了这个问题。
    • 这只是一个示例用例。这是示例用例的一个很好的答案,但这只是展示了您可能需要的一个实例。也许您的答案更适合启发该示例的问题:stackoverflow.com/questions/3791240/…
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多