如何从字符串中删除干扰词并使用正则表达式进行搜索?C#

如何从字符串中删除干扰词并使用正则表达式进行搜索?C#,c#,regex,c#-4.0,C#,Regex,C# 4.0,我正在尝试在字符串中搜索字符串 StringToSearch:那只敏捷的棕色狐狸跳过了栅栏 搜索词:brown 因此,当我执行StringToSearch.ContainsEx(searchTerm)时,它返回true。 因此,我现在的工作方式是,首先使用string.remove()删除nosie单词,然后执行string.Split(“”)以获取单词,然后在要搜索的文本中对该数组中的所有单词执行包含搜索 它可以工作,但我希望它尽可能地发挥性能,那么我可以使用RegEx进行同样的搜索吗?i、

我正在尝试在字符串中搜索字符串

StringToSearch:
那只敏捷的棕色狐狸跳过了栅栏

搜索词:
brown

因此,当我执行
StringToSearch.ContainsEx(searchTerm)
时,它返回true。 因此,我现在的工作方式是,首先使用
string.remove()
删除nosie单词,然后执行
string.Split(“”)
以获取单词,然后在要搜索的文本中对该数组中的所有单词执行包含搜索

它可以工作,但我希望它尽可能地发挥性能,那么我可以使用RegEx进行同样的搜索吗?i、 e 1)删除噪声词,如
的、
等,然后查看要搜索的文本中是否包含
搜索字符串
中的所有词

我根本不知道如何在C#中使用正则表达式,所以代码示例会很有帮助。谢谢您,如果您觉得其他技术比正则表达式更适合我,请推荐它们。

试试这个(如果需要,请添加更多类似的词语):

(?=.*\bbrown\b)
=使用正向前瞻检查文本中是否存在单词
brown
\b
是单词边界,因此它不会从另一个单词中选取该单词。例如,从单词
land

中避开
,试试这个(如果需要,添加更多类似的单词):


(?=.*\bbrown\b)
=使用正向前瞻检查文本中是否存在单词
brown
\b
是单词边界,因此它不会从另一个单词中选取该单词。例如,避免使用
单词
land

尝试使用
Linq
,我认为如果两个字符串都很长会很好。使用regex,您首先必须动态地构造一个regex(对于searchTerm的每个元素),最终会得到一个长的regex,这可能会很慢

List<string> StringToSearchList = new List<string>(StringToSearch.Split(' '));
List<string> searchTermList = new List<string>(searchTerm.Split(' '));

var query = StringToSearchList.Select(c => c).Except(searchTermList);
List StringToSearchList=新列表(StringToSearch.Split(“”));
List searchTermList=新列表(searchTerm.Split(“”));
var query=StringToSearchList.Select(c=>c).Except(searchTermList);

您可以使用
string.Join
数组
转换为
字符串

尝试使用
Linq
,我认为如果两个字符串都长就好了。使用regex,您首先必须动态地构造一个regex(对于searchTerm的每个元素),最终会得到一个长的regex,这可能会很慢

List<string> StringToSearchList = new List<string>(StringToSearch.Split(' '));
List<string> searchTermList = new List<string>(searchTerm.Split(' '));

var query = StringToSearchList.Select(c => c).Except(searchTermList);
List StringToSearchList=新列表(StringToSearch.Split(“”));
List searchTermList=新列表(searchTerm.Split(“”));
var query=StringToSearchList.Select(c=>c).Except(searchTermList);
您可以使用
string.Join
数组
转换为
字符串