使用C#中的正则表达式匹配a ^ n b ^ n c ^ n(例如“aaabbbccc”)

时间:2015-04-23 21:17:21

标签: c# regex

您可以轻松使用正则表达式验证常规语言。我的问题是你能用它来验证一个上下文敏感的语言吗?现代正则表达式在层次结构中有多强大?

你将如何创建一个正则表达式来检查与^ n b ^ n c ^ n匹配的字符串?

以下情况应符合:

abc
aabbcc
aaabbbccc

以下情况不符合:

abbc
aabbc
aabbbccc

1 个答案:

答案 0 :(得分:13)

.NET提供了balancing groups,您应该可以使用它来执行此操作;类似的东西:

^(?<n>(?<o>a))*(?<-n>b)*(?<-o>c)*(?(n)(?!))(?(o)(?!))$

n增加oa,每个n递减b,然后oc递减(?!) ,如果任一计数器仍然大于零,则匹配失败(site1 => 3015 site2 => 4015 site3 => 3014 site4 => 4014 and so on.