7

我有一个字符串

foo-bar-bat.bla

我只想匹配foo

我有缺陷的模式同时匹配foobar

\w+(?=-.*\.bla)

我该如何丢弃bar?或者甚至更好,我怎么能在之后停止匹配东西foo

4

3 回答 3

9

您可以使用以下模式(只要您的字符串始终按照您所说的方式格式化):

^\w+(?=-.*\.bla)

正则表达式图片

在 Debuggex 上实时编辑

符号匹配字符串的^开头。因此将采用字符串的第一个匹配项。

?=旨在确保未捕获但存在跟随的组。

于 2013-03-13T17:51:11.510 回答
0
^[^-]+

起始^意味着从字符串的开头开始匹配。字符[^-]组意味着搜索任何不是破折号的东西。这+意味着字符组应该匹配一个字符一次或多次。

于 2013-03-13T17:55:29.060 回答
0

表达式的“.*”部分与“bar”匹配。

^\w+(?=-.*)

此表达式读作“在字符串的开头,至少有一个字符后跟(但不包括在匹配中)一个 DASH 后跟任何内容”

^ \w+ (?=-.*)
|  |    |
|  |   matches "-bar-bat.bla"
|  matches "foo"
start of string
于 2013-03-13T18:19:29.367 回答