正则表达式 - 匹配单个/数字或单个单词中的空格

时间:2013-09-03 09:24:41

标签: .net regex

下面是我目前的代码 我将用正则表达式替换*以便我进行搜索,

Regex.Match(value, @"([a-zA-Z0-9\s_.,!""'/$\-]+)");

我想确保正则表达式只匹配一个单词,而不是整个句子。

Keyword: recomm*
Text: recommend on a solution
Result: matched

Keyword: recommend*
Text: recommend on a solution
Result: matched

Keyword: re*om*end
Text: recommend on a solution
Result: matched

Keyword: recommend*on
Text: recommend on a solution
Result: not matched

但是我的正则表达式与前3个示例一起工作正常,但不是第四个。 有谁知道如何解决问题?

2 个答案:

答案 0 :(得分:2)

我将从字符类中删除\s并使用*分隔符:

([a-zA-Z0-9_.,!""'/$\-]*)

你可以简化:

([\w.,!""'/$-]*)

答案 1 :(得分:1)

您应该删除\s,因为它与空格相匹配。所以,只需删除它,你就可以了! = d

实际上,如果您将单词视为由空格分隔的单词,则可以使用:

(\S+)

匹配任何不是空格的东西。

或者您可以自己指定字符集:

([^ \t\r\n]+)