【发布时间】:2011-07-26 12:21:55
【问题描述】:
我有一个正则表达式([-@.\/,':\w]*[\w])*,它匹配文本中的所有单词(包括像 IBM 这样的标点符号),但我想让它排除下划线,我似乎不知道该怎么做......我尝试添加^[_](例如(^[_][-@.\/,':\w]*[\w])*),但它只是将所有单词分解为字母。我想保留单词匹配,但我不希望单词中包含下划线,也不希望单词完全由下划线组成。
这样做的正确方法是什么?
附:
- 我的应用是用 C# 编写的(如果这有什么不同的话)。
- 我不能使用 A-Za-z0-9,因为我必须匹配任何语言的单词(可能是中文、俄语、日语、德语、英语)。
更新
这是一个例子:
“I.B.M 应该被解析为一个单词 w_o_r_d!俄语也应该可以工作:мплекс исторических событий。”
匹配项应该是:
I.B.M.
should
be
parsed
as
one
word
Russian
should
work
too
мплекс
исторических
событий
请注意,w_o_r_d 不应匹配。
【问题讨论】:
-
^[_]应该是[^_]。前者将匹配字符串开头的_(如果是多行则匹配行)。 -
@climbage,这肯定有助于忽略下划线,但单词中的下划线仍然存在。
标签: c# regex regex-negation