擅长:python、mysql、java
<p>现代语言中使用的正则表达式并不代表正则语言。zmo说的对,语言理论中的正则语言是由有限状态自动机表示的,但是现代语言中使用的任何回溯的正则表达式,如捕捉组、查找等,不能用语言理论中的FSAs来表示。如何用DFA甚至NFA来表示(\w+)\1这样的模式?在</p>
<p>您要查找的正则表达式可以如下所示(仅匹配两个级别):</p>
<pre><code>(?=(\((?:[^\)\(]*\([^\)]*\)|[^\)\(])*?\)))
</code></pre>
<p>我在<a href="http://regexhero.net/tester/" rel="nofollow">http://regexhero.net/tester/</a>上测试了这个</p>
<p>匹配项在捕获的组中:</p>
<p>1:(NP(NNP Hoi)(NN哈罗)(NN Hey)(NN(NN Ciao)(NN Adios))</p>
<p>1:(NNP Hoi)</p>
<p>1:(NN哈罗)</p>
<p>1:(NN嘿)</p>
<p>1:(NNP(NN Ciao)(NN Adios))</p>
<p>1:(NN Ciao)</p>
<p>1:(再见)</p>