如何使用正则表达式匹配单个单词字符串和带连字符的字符串?

时间:2013-10-18 16:03:01

标签: regex string lookbehind negative-lookbehind

我正在尝试使用正则表达式匹配特定字符串后的第一个单词,并且一直在努力使所有实例都正常工作。假设我有2个字符串:

Site Code: foobar

Site Code: hello-world

现在,使用(?<=\bSite Code:\s)(\w+)返回foobar这是正确的,但只在我需要hello时返回hello-world

因此,我将表达式更改为(?<=\bSite Code:\s)(\w+)(-\w+)以便拾取带连字符的单词,但现在它忽略了非连字符的单词。

有没有办法从同一个表达式同时获取foobarhello-world

2 个答案:

答案 0 :(得分:2)

试试这个(?<=\bSite Code:\s)(\S+)

如果没有更详细的要求,很难给出确切的答案。 上面的正则表达式应匹配特定字符串“Site Code:”之后的所有非空格字符。

答案 1 :(得分:1)

试试这个正则表达式:

(?<=\bSite Code:\s)([-\w]+)

#\w only include the range [A-Za-z0-9_] in ascii mode.