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