我一直在使用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.
我忘了删除逃脱斜线。
答案 0 :(得分:0)
尝试使用正则表达式<([^-<>]+[^<>]*)>
,其中包含:
匹配<
和>
之间的内容,该内容以-
,<
或>
以外的字符开头,后跟任意组合(也是空的)<
或>
以外的字符。
的更新强> 的
您也可以考虑使用正则表达式<((?!\\-\\-)[^<>]+)>
,其中包含:
匹配<
和>
之间不以--
开头并且不包含任何<
或>
的内容。