gpt4 book ai didi

regex - 为什么正则表达式引擎选择从 `..X` 匹配模式 `.X|..X|X.`?

转载 作者:行者123 更新时间:2023-12-01 13:46:14 34 4
gpt4 key购买 nike

我有一个字符串

1234X5678

我使用这个正则表达式来匹配模式

.X|..X|X.

我得到了

34X

问题是为什么我没有得到 4XX5

为什么正则表达式选择执行第二种模式?

最佳答案

这里的重点是:

正则表达式引擎默认从左到右分析输入。

因此,您有一个交替模式 .X|..X|X. 并针对 1234X5678 运行它。 See what happens :

enter image description here

每个替代分支都针对字符串中从左到右的每个位置进行测试

前 1-7 步显示引擎如何尝试匹配字符串开头的字符。但是,所有分支(.X..XX. 均不匹配 12123).

步骤 8-13 只是重复相同的失败场景,因为没有分支匹配 23234

步骤 14-19 显示了一个成功的场景,因为 34X 可以与 Branch 2 (..X) 匹配。

正则表达式引擎不会到达 4 之前的位置,因为该位置被匹配并消耗

还有一个结论:

交替的顺序很重要,在 NFA 正则表达式引擎中,第一个匹配的替代方案获胜,但这个替代方案不必是第一个最短的替代方案,一个更长的替代方案 匹配beginning 可以匹配得更早。

关于regex - 为什么正则表达式引擎选择从 `..X` 匹配模式 `.X|..X|X.`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35946342/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com