设置:
- 具有反向引用的正则表达式
- 一元语言(1个符号的字母)
在此设置中是否可以确定以下问题:
- 给定带有反向引用的正则表达式,它是否定义了正则语言?
例如,(aa+)\1
定义一种常规语言,而(aa+)\1+
没有。我们可以决定是哪种情况吗?
为了具体起见,“带有反向引用的正则表达式”在这里指的是例如与Perl兼容的常规正则表达式的以下子集:
a
匹配字符a
(字母中唯一的字符)X*
匹配0个或多个出现X
X|Y
比赛X
或Y
- 括号可用于分组和捕获
\1
。\2
等匹配与第一对,第二对等括号相同的字符串
我们还可以使用常规的简写形式,例如X+
= XX*
。
1
您是否探索过计数方法,即检查的顺序?L n | ?我想你对弗雷登伯格的工作很熟悉吗?
—
拉斐尔