例如,我有一个术语列表和一个字符串:
var terms = { "programming language", "programming", "language" };
var content = "A programming language is a formal language that "
+ "specifies a set of instructions that can be used to "
+ "produce various kinds of output.";
我可以使用Regex.Matches(content, term).Count
来计算列表中出现的列表有4次:
但是有重复,应该只有2次。
我目前的解决方案是保存每次出现的开始索引和结束索引,然后与保存的出现位置进行比较,无论它在何处,并且已经计数。没有使用开始和结束索引有更好的方法吗?
答案 0 :(得分:1)
根据评论的建议,我使用正则表达式simple solution,它应该使用完整的单词,即programming language
可以计算,但programming languages
不能:
var pattern = @"(?<!\S)programming language(?![^\s])|(?<!\S)programming(?![^\s])|(?<!\S)language(?![^\s])";
var count = Regex.Matches(content, pattern).Count;
注意:只有在programming language
和programming
条款之前放置language
时才能使用此模式。如果有人能提供更好的解决方案,请这样做。