Kir*_*ril 5 c# regex regex-negation
我有一个正则表达式([-@.\/,':\w]*[\w])*,它匹配文本中的所有单词(包括像IBM这样的标点符号),但我想让它排除下划线,我似乎无法弄清楚如何做到这一点...我尝试添加^[_](例如(^[_][-@.\/,':\w]*[\w])*)但它只是将所有单词分解为字母.我想保留单词匹配,但我不希望在其中包含带下划线的单词,也不希望单词完全由下划线组成.
什么是正确的方法来做到这一点?
PS
更新
 
这是一个例子:
"IBM应该被解析为一个单词w_o_r_d!俄语也应该起作用:мплексисторическихсобытий."
比赛应该是:
I.B.M.  
should  
be  
parsed  
as  
one  
word  
Russian  
should  
work  
too  
??????  
????????????  
???????  
请注意,w_o_r_d不应该匹配.
试试这个:
([-@.\/,':\p{L}\p{Nd}]*[\p{L}\p{Nd}])*
该\w班是由[\p{L}\p{Nd}\p{Pc}]当您要执行的Unicode匹配.(或者只是[a-zA-Z0-9]在进行非Unicode匹配时.)
这是\p{Pc}Unicode类别 - 标点符号/连接符 - 通过匹配下划线导致问题,因此我们明确地匹配其他类别而不包括那个.
(此处有更多信息,"字符类:单词字符",此处为"字符类:支持的Unicode通用类别".)