如何将a^nb^n与Java正则表达式匹配?

如何将a^nb^n与Java正则表达式匹配?

这是一系列教育准则文章的第二部分。它展示了如何使用查找头和嵌套引用来匹配非正则语言a。nbn..嵌套引用首先在以下内容中引入:这个正则表达式是如何找到三角数的?

一个典型的非-正规语言是:

L = { anbn: n > 0 }

这是所有非空字符串的语言,由若干个a之后是相同数量的b该语言中字符串的示例如下abaabbaaabbb.

此语言可以显示为非常规语言。泵引理..它实际上是一个原型上下文无关语言,它可以由上下文无关语法 S → aSb | ab.

尽管如此,现代regex实现清楚地认识到的不仅仅是普通语言。也就是说,从形式语言理论的定义来看,它们并不是“规则”的。PCRE和Perl支持递归regex,而.NET支持平衡组定义。更少的“花哨”特性,例如反向引用匹配,意味着正则表达式是不正常的。

但是这些“基本”功能到底有多强大呢?我们能认出L例如,使用Java regex?我们是否可以将查找器和嵌套引用组合在一起,并有一个可以与之协同工作的模式呢?String.matches来匹配字符串,如abaabbaaabbb等等?

参考文献

相关问题


慕工程0101907
浏览 569回答 3
3回答

HUH函数

鉴于没有提到支持递归模式的PCRE,我只想指出描述所涉语言的最简单和最有效的PCRE示例:/^(a(?1)?b)$/
打开App,查看更多内容
随时随地看视频慕课网APP