首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"(“”and“”的条件用法)“

"(“”and“”的条件用法)“
EN

Stack Overflow用户
提问于 2015-07-22 01:25:04
回答 1查看 44关注 0票数 0

如果且仅当之前使用了'(‘,或者如果使用了'(’,则')‘必须是')’,那么‘)’的用法的正则表达式格式是什么?我已经试过^[a-zA-Z]+(([)]?[,]?[a-zA-Z0-9 ][. -/']?[(]?[a-zA-Z0-9][)]?)?[a-zA-Z:.])$了。但只有在使用'(‘时,我才能让它使用')’。

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 02:37:30

正则表达式不能处理上下文。在你的例子中,你是在寻找上下文。正则表达式不是为此而设计的。您需要编写一个函数来检查这一点。

引用自this link

在形式语言理论的上下文中,当某个事物具有所有产生式规则都具有以下形式之一的语法时,它被称为“regular”:

  1. B -> a
  2. B -> aC
  3. B ->

ε

你可以把这些->规则理解为“左手边可以换成右手边”。因此,第一条规则是“B可以替换为a”,第二条规则是“B可以替换为aC”,第三条规则是“B可以替换为空字符串”(ε是空字符串的符号)。

那么B,C和a是什么呢?按照惯例,大写字符表示所谓的“非终端”--可以进一步分解的符号--而小写字符表示“终端”--不能进一步分解的符号。

在您的示例中,您需要的内容如下:

代码语言:javascript
复制
(\([x].*\)[x])*

我将[x]添加到代表x的次数(当然,它不是正则表达式约定的一部分)。从正则表达式的定义可以看出,没有办法以符合正则表达式定义的方式来表示这样的表达式。

这不仅仅是一个“灰色”的定义问题。创建一种类似正则表达式的语言来解决您在这里提到的问题要复杂得多(算法和复杂性方面)。这是一个完全不同的问题领域,尝试和模式化您在这里提到的问题类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31545710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档