【问题标题】:Regular expression properties (theory) [closed]正则表达式属性(理论)[关闭]
【发布时间】:2019-11-23 04:44:23
【问题描述】:

我正在阅读 Aho 和 Ullman 的著作《解析、翻译和编译理论》。在第 2 章介绍正则表达式的部分,有一个正则表达式属性的列表。我不明白属性 2 和 8。这是属性列表:

(1) ???? + ??? = ???? + ????

(2) ∅* = ??????

(3) ???? + (???? + ????) = (???? + ????) + ????

(4) ????(????????) = (????????)????

(5) ????(???? + ??????) = ???????? + ????????

(6) (???? + ??????)???? = ???????? + ????????

(7) ?????????? = ???????? = ????

(8) ∅???? = ????∅ = ∅

(9) ????* = ???? + ????*

(10) (????* )* = ????*

(11) ???? + ??? = ????

(12) ???? + ∅ = ????

其中 ∅ 是表示正则集 ∅, ????, ????, ???? 的正则表达式是任意正则表达式,并且 ????是空字符串。

性质 (2) 和 (8) 如何证明?

编辑:为了解释 +、* 等的符号,以下是书中给出的一些定义(引用):

定义让????是一个有限的字母表。我们定义了一个正则集 ???递归方式如下:

(1) ∅(空集)是 ???? 上的正则集。

(2) {????} 是 ???? 上的常规集合。

(3) {????} 是一个常规集合超过 ????对所有人 ????在????。

(4) 如果 ????和 ????常规集合结束了????,那么也结束了

(a) ???? ∪ ????.

(b) ??????????.

(c) ????*.

(5) 没有其他东西是正则集。

因此 ????* 的子集是正则当且仅当它是 ∅、{????} 或 {????}, 对于一些 ????在 ?????? 中,或者可以通过有限数量的 操作联合、连接和闭包的应用。

.

定义正则表达式 over ????和正则表达式 它们表示是递归定义的,如下:

(1) ∅是表示正则集∅的正则表达式。

(2) ????是表示正则集 {????} 的正则表达式。

(3) ????在 ????是表示正则集 {????} 的正则表达式。

(4) 如果 ????和 ????是表示正则集的正则表达式???? 和????,然后分别

(a) (????+????) 是一个表示 ???? 的正则表达式∪ ????.

(b) (????????) 是表示????????的正则表达式。

(c) (????)* 是表示 ????* 的正则表达式。

(5) 没有其他东西是正则表达式。

【问题讨论】:

  • 考虑查看Software EngineeringComputer Science,您可能会发现您的问题更适合那里。
  • 谢谢,我去看看。
  • 那些标点符号是做什么的*+()=
  • @sin 我将添加另一个编辑来解释这些

标签: regex theory


【解决方案1】:

我的猜测是 2 和 8 个属性可能只是一个简单的数学运算:

属性 2

∅ 是一个空集,那么∅* = ? 为真,∅+ = ? 也为真,∅{Infinity} = ? 也为真,因为 e 是一个空字符串。

一个正则表达式是一个字符串,因此一个空的正则表达式重复任意次数或任何操作,仍然是一个空的正则表达式,它再次等于右侧的一个空字符串.

参考: Why is the Kleene star of a null set is an empty string?


属性 8

∅? = ?∅ = ∅ 为真,∅?∅?∅? = ?∅?∅?∅ = ∅ 也为真,因为空集与任何东西组合都会产生空集。


参考:

Regular expressions with empty set/empty string

What is the difference between language of empty string and empty set language?

How can concatenating empty sets (languages) result in a set containing empty string?

【讨论】:

  • 现在说得通了,您编辑的参考确实很有帮助。谢谢!
  • 没关系,我想我理解得足够好,可以在需要时创建一个证明。不过,我会记住 Math SO(和 CS!)以备将来的问题。再次感谢!
  • @user109923 提示:记得浏览他们每个人的帮助中心(以及 StackOverflow 的),这样您就可以决定哪些问题更适合哪些网站。祝你好运:)
猜你喜欢
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2017-11-13
  • 2015-04-27
相关资源
最近更新 更多