【问题标题】:How do you use Notepad++ regex pipe | for strings longer than one character?你如何使用 Notepad++ 正则表达式管道 |对于超过一个字符的字符串?
【发布时间】:2010-10-23 16:09:42
【问题描述】:

我正在尝试让 notepad++ 正则表达式在以下句子中查找“abc”和“def”的所有实例:

abc 转到 def。

以下语法似乎都不起作用:

  • abc|def
  • [abc|def]
  • (abc)|(def)
  • (abc|def)

注意:“[a|d]”在我测试时匹配“a”或“d”的任何实例

【问题讨论】:

  • [a|​​d] 并不是你想的那样,它的意思是“匹配 a、d 或 | 中的任何一个”。 [ad] 会做同样的事情,但这与 a|d 不同。
  • 我的意思是,| [a|d] 中的字符实际上并没有做任何事情,它只是说匹配“|”也可以。那不是你想要做的。因为 Notepad++ 不支持使用 |字符表示“其中一个”,您尝试做的事情将是不可能的。
  • 即使查询是多行的,我如何才能搜索在“任何 sql 查询”中键入的 SQL 查询。我为单行尝试了 ["][^\n]["] 为多行尝试了 ["]*["] 但在多行的情况下它忽略了同一行中的第二个引号并在随机引用位置的下一行结束.. . 我在这里需要帮助,我正在使用 Notepad++ 找到它。

标签: regex notepad++ pipe


【解决方案1】:

“长于一个字符”没什么特别的,Notepad++不支持|正则表达式中的字符。甚至“a|d”都不起作用。请参阅the regex help page Notepad++ 6.1.1 版现在支持|

我建议使用具有适当正则表达式实现的编辑器,例如 gvimUltraEdit

【讨论】:

  • 今天的最新版本(记事本 10.1.1)支持 |在正则表达式中
  • @DragosToader ...然而,你懒得回答操作员的问题??
  • @b1naryatr0phy 记事本 10.1.1 的答案是搜索 (abc)|(def)
【解决方案2】:

升级到记事本++ v6。来自更新日志:“支持 PCRE(Perl 兼容正则表达式)。”我已经验证了 |使用 Notepad++ v6 时,可用于正则表达式搜索。

【讨论】:

    【解决方案3】:

    在字符集声明 ([…]) 中,只有字符 \]- 是特殊字符,具有转义下一个字符、关闭字符集声明和标记字符范围的特殊功能(仅当没有写在开头或结尾时),分别。任何其他字符都被解释为普通字符。

    [a|d] 中的| 也是如此,这意味着[a|d] 描述了a|d 中的任何字符,而不仅仅是ad,如a|d 确实.

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,这就是我来到这里的原因。由于它是notepad++的缺陷,我们可以使用Powershell来解决。在您的情况下,只需运行 Select-String:

      `ss abc,def filename`
      

      如果在 Unix 上,那么您当然还有其他工具,例如 grep。

      我知道你想要一个 notepad++ 的解决方案,我也是,但有时你必须凑合着做。

      【讨论】:

        【解决方案5】:

        | 现在应该可以工作了。
        感谢 Notepad++ 中的正则表达式改进

        abc|def
        
        (abc)|(def)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-09-01
          • 2014-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多