2010-09-13 115 views
1

我想写一个正则表达式来匹配满足以下条件的任何字符串。使用正则表达式匹配Paiousheses

字符串开始和结束匹配对括号“(”“)”

可以有任何数量的在其内的括号。

例如我正则表达式shud匹配:

(P(X)+ Q(X))(P(X)* Q(X))。)

但不匹配

p(x)+ q(x) P(X)* Q(x)的

我怎样写这样的正则表达式

+0

你想说所有的内部括号必须匹配吗?如果是这样的话,我相信你需要使用Push-Down-Automata而不是正则表达式来解决这个问题,因为有限状态自动机(定义正则表达式的空间)不允许这种类型的支票。 – aperkins 2010-09-13 16:11:20

+0

澄清我的评论 - 如果你正在寻找一个正则表达式来解决[n] b [n],你有一个相同数量的 – aperkins 2010-09-13 16:11:52

+0

dangit - 愚蠢的回车键 - 继续:a和b的数量相等,那么你将无法用正则表达式来解决这个一般情况。根据你所描述的内容,看起来这就是你正在寻找的东西(当然是在一个变体中),这需要一台PDA。 – aperkins 2010-09-13 16:12:49

回答