我有一个字符串
foo-bar-bat.bla
我只想匹配foo
我有缺陷的模式同时匹配foo和bar
\w+(?=-.*\.bla)
我该如何丢弃bar?或者甚至更好,我怎么能在之后停止匹配东西foo?
我有一个字符串
foo-bar-bat.bla
我只想匹配foo
我有缺陷的模式同时匹配foo和bar
\w+(?=-.*\.bla)
我该如何丢弃bar?或者甚至更好,我怎么能在之后停止匹配东西foo?
您可以使用以下模式(只要您的字符串始终按照您所说的方式格式化):
^\w+(?=-.*\.bla)

符号匹配字符串的^开头。因此将采用字符串的第一个匹配项。
这?=旨在确保未捕获但存在跟随的组。
^[^-]+
起始^意味着从字符串的开头开始匹配。字符[^-]组意味着搜索任何不是破折号的东西。这+意味着字符组应该匹配一个字符一次或多次。
表达式的“.*”部分与“bar”匹配。
^\w+(?=-.*)
此表达式读作“在字符串的开头,至少有一个字符后跟(但不包括在匹配中)一个 DASH 后跟任何内容”
^ \w+ (?=-.*)
| | |
| | matches "-bar-bat.bla"
| matches "foo"
start of string