在C#中使用正则表达式匹配^ nb ^ nc ^ n(例如"aaabbbccc")

LeB*_*n23 12 c# regex

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

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

以下情况应符合:

abc
aabbcc
aaabbbccc
Run Code Online (Sandbox Code Playgroud)

以下情况不符合:

abbc
aabbc
aabbbccc
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 13

.NET提供了您应该可以用来执行此操作的平衡组 ; 就像是:

^(?<n>(?<o>a))*(?<-n>b)*(?<-o>c)*(?(n)(?!))(?(o)(?!))$
Run Code Online (Sandbox Code Playgroud)

递增n和o每个a递减n,每个递减b,然后o为每个递减c,然后(?!)如果任一计数器仍然大于零,则失败匹配().