模式匹配之前的任何字母数字文本 - 在字符串中

时间:2015-05-11 00:18:04

标签: regex

我尝试在负号-之前的字符串中输入任何字母数字或文字,例如:

earth-green, random-stuff, coffee-stuff, another-tag

我尝试匹配earth random coffee another

我尝试了以下正则表达式:

(\w*[^][\-])

但是,它匹配earth- random- coffee- another-

This DEMO显示了这种情况。在那里你可能会注意到earth- random- coffee- another-突出显示,而我不想在突出显示中包含负号-

3 个答案:

答案 0 :(得分:2)

这是使用正向前瞻性正则表达式的一个很好的例子。

你可以使用这样的正则表达式:

(\w+)(?=-)

Regular expression visualization

<强> Working demo

另一方面,你的正则表达式中的问题是你把supn和^放在了捕获组中:

(\w*[^][\-])
     ^---^---- Here (btw... you don't need [^])

你必须使用这个

(\w+)-

<强> Working demo

答案 1 :(得分:1)

您只需添加字边界和-即可为您添加书签:

\b(\w+)-

Demo

答案 2 :(得分:0)

>>> x = 'earth-green, random-stuff, coffee-stuff, another-tag'
>>> re.compile('(\w+)-\w+').findall(x)
['earth', 'random', 'coffee', 'another']
>>>

许多使用案例regex howtos

的好例子