仅匹配一次模式

时间:2013-03-13 17:49:46

标签: regex lookahead find-occurrences

我有一个字符串

foo-bar-bat.bla

我希望仅匹配foo

我的有缺陷模式与foobar

相匹配
\w+(?=-.*\.bla)

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

3 个答案:

答案 0 :(得分:6)

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

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

Regular expression image

Edit live on Debuggex

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

?=旨在确保不会捕获群组,但会出现。

答案 1 :(得分:0)

^[^-]+

起始^表示从字符串的开头开始匹配。字符组[^-]表示搜索不是短划线的任何内容。 +表示字符组应该匹配一个或多个字符。

答案 2 :(得分:0)

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

^\w+(?=-.*)

此表达式显示为“在字符串的开头,至少有一个字符后跟(但未包含在匹配中)DASH后跟任何内容”

^ \w+ (?=-.*)
|  |    |
|  |   matches "-bar-bat.bla"
|  matches "foo"
start of string