正则表达式:仅在整行包含模式时捕获

时间:2018-05-24 20:22:51

标签: regex

正则表达式的新手..

我正在尝试找到一种方法来捕获所有字符,直到第一个下划线,但仅限于行中任何位置不包含“-NEW”的行。

因此,在下面的示例中,第一行将导致没有组1匹配,因为该行包含“-NEW”。 剩余的行将具有第一部分,并且排除作为第1组匹配捕获的第一下划线。 这是正确的吗?

skipme_garbage-NEW_nothing
takeme _garbage_some-otherstuff
takemetoo _some_more_garbage
alsotakeme _0

1 个答案:

答案 0 :(得分:1)

这适用于我理解你想要的东西。你可以看到demo I made on regex101.com

^([^_]+)(?!.*new)
  • ^匹配行的开头
  • ([^_]+)匹配任何不是下划线且存储在群组中的字符
  • (?!.*new)负向前看。如果.*new出现在该行的其他任何位置,则匹配失败。