我想写一个正则表达式来匹配满足以下条件的任何字符串。使用正则表达式匹配Paiousheses
字符串开始和结束匹配对括号“(”“)”
可以有任何数量的在其内的括号。
例如我正则表达式shud匹配:
((P(X)+ Q(X))(P(X)* Q(X))。)
但不匹配
( p(x)+ q(x))。 ( P(X)* Q(x)的)
我怎样写这样的正则表达式
我想写一个正则表达式来匹配满足以下条件的任何字符串。使用正则表达式匹配Paiousheses
字符串开始和结束匹配对括号“(”“)”
可以有任何数量的在其内的括号。
例如我正则表达式shud匹配:
((P(X)+ Q(X))(P(X)* Q(X))。)
但不匹配
( p(x)+ q(x))。 ( P(X)* Q(x)的)
我怎样写这样的正则表达式
使用regular expressions is difficult进行任何类似的解析,几乎总是一个坏主意。见this answer至this question。哦,恐怖!
大声笑很好地由作者提出 – AnkurVj 2010-09-13 17:24:21
你想说所有的内部括号必须匹配吗?如果是这样的话,我相信你需要使用Push-Down-Automata而不是正则表达式来解决这个问题,因为有限状态自动机(定义正则表达式的空间)不允许这种类型的支票。 – aperkins 2010-09-13 16:11:20
澄清我的评论 - 如果你正在寻找一个正则表达式来解决[n] b [n],你有一个相同数量的 – aperkins 2010-09-13 16:11:52
dangit - 愚蠢的回车键 - 继续:a和b的数量相等,那么你将无法用正则表达式来解决这个一般情况。根据你所描述的内容,看起来这就是你正在寻找的东西(当然是在一个变体中),这需要一台PDA。 – aperkins 2010-09-13 16:12:49