为什么正则表达式((x,y)|(x,z))像《Core Java》一书中所说的那样是不确定的?作者给出了他的观点:
当解析器看到 x 时,它不知道采取两个替代方案中的哪一个。这个表达式可以以确定性形式重写为 (x,(y|z))
谁能给我一个解释吗?
为了具有确定性形式,在当前位置最多只允许有一种可能的方式。假设你有一个字符串“x,y”。现在正则表达式引擎查看第一个字符,“x”。在你的表达式中,你的字符串有两种可能性如何在“之后继续”x" 在第一个位置接受您的输入。接下来有 2 种方法来检查。要么字符串后面跟着 ",y“或通过”,z".
, ⇨ y
⬀
x
⬂
, ⇨ z
对于 (x,(y|z)) 你总是只有一种方法。如果 ”x" 位于位置 1,您将转到位置 2。同样,只是带有 ",”。最后他必须检查是否有“y" or a "z” 在位置 3 上接受这个词。从来没有两种方法。
x ⇨ , ⇨ (y or z)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)