I've been using Boost::regex and Boost::regex_search and found that when I run the regex
\\<(\\w+\\-?\\w+)\\>
These all get matched like normal
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
But lines like this also get matched
--> peacekeep3r (~peacekeep@chello084114169104.2.15.vie.surfer.at) has joined #bitcoin
<-- Raccoon has quit (Changing host)
--> Raccoon (bismuth@unaffiliated/raccoon) has joined #bitcoin
This is rather confusing since I specifically asked it to find a left angle bracket then text that might have a dash and then a right angle bracket.
Update 2:
Thanks to Ωmega for helping me find the best solution: <(\\w+(?:\\-\\w+)*)>
Update:
Either
<(\\w+\\-?\\w+)> or <([^-<>]+[^<>]*)> works for my purposes.
I forgot to remove the escape slashes.