我有一个字符串
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