【问题标题】:Regex: Match lines NOT starting with phrase正则表达式:匹配不以短语开头的行
【发布时间】:2016-05-05 02:45:37
【问题描述】:

我发现了这个关于负前瞻的问题,但它在 Regexr 中对我不起作用(我用它来验证正则表达式): Find lines not starting with " in Notepad++

http://www.regexr.com/

我想匹配不是以“Sold, ship now”开头的每一行

目前,在正则表达式中,当我在以下文本中使用表达式 ^(?!Sold, ship now) 时:

Sold, ship now: [FreeEconomy Shipping]

Sold, NOT ship now: [FreeEconomy Shipping]

Sold, ship now: [FreeEconomy Shipping]

我收到 0 个匹配项。

【问题讨论】:

  • 绝对没有理由为这个问题发布图片。您可以将表达式和示例数据作为文本发布。仅当无法以任何其他方式证明问题时才应使用图像。请参阅this Meta post,了解应避免使用图片的众多原因。
  • 此外,RegExr 允许您保存正则表达式和测试数据,并直接链接到该数据。提供到 RegExr 站点的通用链接并不比发布数据图像更有帮助。但我们真正需要的只是您的代码/示例数据/任何文本形式,因此我们可以将其复制到我们自己的编辑器/IDE 中并自己使用。
  • 可以用基本的正则表达式完成,但它的大小是O(N²),其中 N 是字符串的长度。 :-)

标签: regex regex-negation regex-lookarounds


【解决方案1】:

您需要使用多行标志。对于regexr,可以这样激活:

另外,如果您想返回不以 Sold, ship now 开头的所有行,我建议您在表达式中使用点加号:

^(?!Sold, ship now).+

【讨论】:

  • Notepad++ 总是处于多行模式,所以我怀疑缺少的.+ 才是真正的问题。
  • 祝福你。我试过了。+它只是不在那个屏幕截图中。
猜你喜欢
  • 1970-01-01
  • 2019-06-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
相关资源
最近更新 更多