0

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

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 个示例,但不适用于第 4 个示例。有谁知道如何解决这个问题?

4

2 回答 2

2

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

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

你可以简化:

([\w.,!""'/$-]*)
于 2013-09-03T09:49:29.660 回答
1

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

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

(\S+)

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

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

([^ \t\r\n]+)
于 2013-09-03T10:40:45.780 回答