如果且仅当之前使用了'(‘,或者如果使用了'(’,则')‘必须是')’,那么‘)’的用法的正则表达式格式是什么?我已经试过^[a-zA-Z]+(([)]?[,]?[a-zA-Z0-9 ][. -/']?[(]?[a-zA-Z0-9][)]?)?[a-zA-Z:.])$了。但只有在使用'(‘时,我才能让它使用')’。
发布于 2015-07-22 02:37:30
正则表达式不能处理上下文。在你的例子中,你是在寻找上下文。正则表达式不是为此而设计的。您需要编写一个函数来检查这一点。
引用自this link
在形式语言理论的上下文中,当某个事物具有所有产生式规则都具有以下形式之一的语法时,它被称为“regular”:
ε
你可以把这些->规则理解为“左手边可以换成右手边”。因此,第一条规则是“B可以替换为a”,第二条规则是“B可以替换为aC”,第三条规则是“B可以替换为空字符串”(ε是空字符串的符号)。
那么B,C和a是什么呢?按照惯例,大写字符表示所谓的“非终端”--可以进一步分解的符号--而小写字符表示“终端”--不能进一步分解的符号。
在您的示例中,您需要的内容如下:
(\([x].*\)[x])*我将[x]添加到代表x的次数(当然,它不是正则表达式约定的一部分)。从正则表达式的定义可以看出,没有办法以符合正则表达式定义的方式来表示这样的表达式。
这不仅仅是一个“灰色”的定义问题。创建一种类似正则表达式的语言来解决您在这里提到的问题要复杂得多(算法和复杂性方面)。这是一个完全不同的问题领域,尝试和模式化您在这里提到的问题类型。
https://stackoverflow.com/questions/31545710
复制相似问题