2011-03-22 54 views
3

我该如何使用C#和正则表达式来查找某个模式在某个字符串中出现了多少次,或者是否在整个字符串中重复了一次模式。例如:在C#中使用正则表达式查找循环模式

模式:abc
找了多少次,这似乎在abcabcabcabcabc

+1

我觉得正则表达式是有点矫枉过正。你是否已经知道“原始模式”,你打算发现这一点? – 2011-03-22 14:43:43

+1

我认为这是一个简单的例子。也许真实情况更复杂。另外,用正则表达式来做这件事很简单,所以我不确定它是如何“过度杀伤”的。人们似乎普遍厌恶使用正则表达式! – 2011-03-22 14:46:24

+1

@Josh M.“人们似乎普遍厌恶使用正则表达式!”有充分的理由。 – 2011-03-22 14:48:26

回答

3
int count = Regex.Matches("abcabcabcabcabc", "abc").Count; 

这将返回文本中的模式(参数2)中出现的次数来搜索(参数1) 。

5

您可以使用Regex类的Matches方法获取给定输入字符串中给定模式的所有匹配项。如果您匹配的模式是用户输入,那么您可能还想使用Regex.Escape来转义其中的任何特殊字符。

var input = "abcabcabcabcabc"; 
var pattern = new Regex(@"abc"); 
var count = pattern.Matches(input).Count; 
+0

+1提到'Regex.Escape' – neontapir 2011-03-22 14:57:09

3
Regex.Matches("abcabcabcabcabc", @"abc").Count