您可以轻松使用正则表达式验证常规语言。我的问题是你能用它来验证一个上下文敏感的语言吗?现代正则表达式在层次结构中有多强大?
你将如何创建一个正则表达式来检查与^ n b ^ n c ^ n匹配的字符串?
以下情况应符合:
abc
aabbcc
aaabbbccc
以下情况不符合:
abbc
aabbc
aabbbccc
答案 0 :(得分:13)
.NET提供了balancing groups,您应该可以使用它来执行此操作;类似的东西:
^(?<n>(?<o>a))*(?<-n>b)*(?<-o>c)*(?(n)(?!))(?(o)(?!))$
每n
增加o
和a
,每个n
递减b
,然后o
每c
递减(?!)
,如果任一计数器仍然大于零,则匹配失败(site1 => 3015
site2 => 4015
site3 => 3014
site4 => 4014
and so on.
。