regex_search匹配未指定的文本

时间:2012-06-28 16:48:45

标签: c++ regex boost boost-regex

我一直在使用Boost :: regex和Boost :: regex_search,发现当我运行正则表达式时

\\<(\\w+\\-?\\w+)\\>

这些都像普通

一样匹配
BitcoinicaHacker> Who wants free bitcoins courtesy of bitcoinica?
<grepix> who doesn't!
<BitcoinicaHacker> post your btc addr
<nanotube> i think bitcoinica wants free bitcoins courtesy of bitcoinica

但是这样的行也匹配

--> peacekeep3r (~peacekeep@chello084114169104.2.15.vie.surfer.at) has joined #bitcoin
<-- Raccoon has quit (Changing host)
--> Raccoon (bismuth@unaffiliated/raccoon) has joined #bitcoin

这是相当令人困惑的,因为我特意要求它找到一个左尖括号,然后是可能有短划线然后是直角括号的文字。

更新2:

感谢Ωmega帮助我找到最佳解决方案:<(\\w+(?:\\-\\w+)*)>

更新:

要么

<(\\w+\\-?\\w+)> or <([^-<>]+[^<>]*)> works for my purposes.

我忘了删除逃脱斜线。

1 个答案:

答案 0 :(得分:0)

尝试使用正则表达式<([^-<>]+[^<>]*)>,其中包含:

匹配<>之间的内容,该内容以-<>以外的字符开头,后跟任意组合(也是空的)<>以外的字符。

更新

您也可以考虑使用正则表达式<((?!\\-\\-)[^<>]+)>,其中包含:

匹配<>之间不以--开头并且不包含任何<>的内容。