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

前锋

我有一串

1234X5678

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

.X|..X|X.

我有

34X

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

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

维克多·史翠比维

这里的重点是:

Regex引擎默认情况下会分析从LEFT TO RIGHT的输入。

因此,您有一个交替模式,.X|..X|X.并且对它进行了操作1234X5678看看会发生什么

在此处输入图片说明

从字符串的左到右分别对每个分支进行测试

最初的1-7个步骤显示了引擎如何尝试匹配字符串开头的字符。然而,没有分支(既不的.X,也不是..X,也不X.匹配12123)。

步骤8-13只是重复相同的失败情况,因为没有分支匹配23匹配234

步骤14-19显示了成功的情况,因为34X可以与分支2(..X匹配

正则表达式引擎无法到达该位置,4因为该位置已被匹配并被消耗

另一个结论是:

交替的顺序很重要,在NFA regex引擎中,第一个替代匹配获胜,但该替代不必是第一个最短的匹配,更长的替代匹配开头的相同字符可以更早匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式匹配X ... X ... Y?

来自分类Dev

正则表达式匹配X ... X ... Y?

来自分类Dev

为什么正则表达式((x,y)|(x,z))是不确定的?

来自分类Dev

Python 正则表达式匹配模式“X<string1>:X<string2>”

来自分类Dev

Javascript正则表达式(x)

来自分类Dev

JavaScript正则表达式:`/ x。* y /`与`/ x(?=。* y)/`

来自分类Dev

为什么正则表达式/ [\ w \ W] + x / i运行起来会非常慢?

来自分类Dev

为什么正则表达式findall返回一个奇怪的\ x00

来自分类Dev

每个x字符后的正则表达式模式

来自分类Dev

每个x字符后的正则表达式模式

来自分类Dev

无法匹配X0-正则表达式

来自分类Dev

用于“ X.XX”或“ X”的正则表达式。或“ X.X”?

来自分类Dev

与特定模式字符串匹配的正则表达式是什么。即:999x

来自分类Dev

匹配正则表达式的有限闭合模式({x,y})

来自分类Dev

如何制作正则表达式以选择X,Y或Z长度的模式

来自分类Dev

正则表达式:匹配除X之外的所有内容,然后匹配X

来自分类Dev

为什么我的正则表达式在X中起作用但在Y中不起作用?

来自分类Dev

正则表达式将匹配项中的所有匹配项替换x次

来自分类Dev

查找中的正则表达式-OS X

来自分类Dev

模式匹配(x:_):为什么列表头与x绑定?

来自分类Dev

正则表达式以匹配(不是x)和y(!x&y)

来自分类Dev

正则表达式如果包含X选择Y否则选择Z

来自分类Dev

正则表达式如果包含X选择Y否则选择Z

来自分类Dev

R正则表达式中的Perl / x(忽略空白)模式的等效项

来自分类Dev

R正则表达式中的Perl / x(忽略空白)模式的等效项

来自分类Dev

为什么此正则表达式可以在Ubuntu上通过但不能在Mac OS X上通过

来自分类Dev

正则表达式将 IP 地址与 IP 地址子网中的“x”匹配

来自分类Dev

python 2.x和3.x中的正则表达式unicode

来自分类Dev

指数函数的正则表达式(e ^ x)

Related 相关文章

  1. 1

    正则表达式匹配X ... X ... Y?

  2. 2

    正则表达式匹配X ... X ... Y?

  3. 3

    为什么正则表达式((x,y)|(x,z))是不确定的?

  4. 4

    Python 正则表达式匹配模式“X<string1>:X<string2>”

  5. 5

    Javascript正则表达式(x)

  6. 6

    JavaScript正则表达式:`/ x。* y /`与`/ x(?=。* y)/`

  7. 7

    为什么正则表达式/ [\ w \ W] + x / i运行起来会非常慢?

  8. 8

    为什么正则表达式findall返回一个奇怪的\ x00

  9. 9

    每个x字符后的正则表达式模式

  10. 10

    每个x字符后的正则表达式模式

  11. 11

    无法匹配X0-正则表达式

  12. 12

    用于“ X.XX”或“ X”的正则表达式。或“ X.X”?

  13. 13

    与特定模式字符串匹配的正则表达式是什么。即:999x

  14. 14

    匹配正则表达式的有限闭合模式({x,y})

  15. 15

    如何制作正则表达式以选择X,Y或Z长度的模式

  16. 16

    正则表达式:匹配除X之外的所有内容,然后匹配X

  17. 17

    为什么我的正则表达式在X中起作用但在Y中不起作用?

  18. 18

    正则表达式将匹配项中的所有匹配项替换x次

  19. 19

    查找中的正则表达式-OS X

  20. 20

    模式匹配(x:_):为什么列表头与x绑定?

  21. 21

    正则表达式以匹配(不是x)和y(!x&y)

  22. 22

    正则表达式如果包含X选择Y否则选择Z

  23. 23

    正则表达式如果包含X选择Y否则选择Z

  24. 24

    R正则表达式中的Perl / x(忽略空白)模式的等效项

  25. 25

    R正则表达式中的Perl / x(忽略空白)模式的等效项

  26. 26

    为什么此正则表达式可以在Ubuntu上通过但不能在Mac OS X上通过

  27. 27

    正则表达式将 IP 地址与 IP 地址子网中的“x”匹配

  28. 28

    python 2.x和3.x中的正则表达式unicode

  29. 29

    指数函数的正则表达式(e ^ x)

热门标签

归档