正则表达式的新手..
我正在尝试找到一种方法来捕获所有字符,直到第一个下划线,但仅限于行中任何位置不包含“-NEW”的行。
因此,在下面的示例中,第一行将导致没有组1匹配,因为该行包含“-NEW”。 剩余的行将具有第一部分,并且排除作为第1组匹配捕获的第一下划线。 这是正确的吗?
skipme_garbage-NEW_nothing
的 takeme _garbage_some-otherstuff
的 takemetoo _some_more_garbage
的 alsotakeme _0
答案 0 :(得分:1)
这适用于我理解你想要的东西。你可以看到demo I made on regex101.com。
^([^_]+)(?!.*new)
^
匹配行的开头([^_]+)
匹配任何不是下划线且存储在群组中的字符(?!.*new)
负向前看。如果.*new
出现在该行的其他任何位置,则匹配失败。