【发布时间】:2016-03-11 17:26:50
【问题描述】:
我有一个字符串
1234X5678
我使用这个正则表达式来匹配模式
.X|..X|X.
我明白了
34X
问题是为什么我没有得到4X 或X5?
为什么正则表达式选择执行第二种模式?
【问题讨论】:
-
您的预期输出是什么? 1234,5678?
-
因为这不是正则表达式引擎(传统 NFA)的工作方式。
-
快速猜测——正则表达式正在尝试贪婪匹配?
-
使用
or它应该匹配第一个模式并忽略其余的因为true|... == true不需要评估第二个模式。 -
我喜欢这些问题。我在一小时前回答了类似的问题。请检查。 正则表达式引擎从左到右分析输入。这不是您使用的原子组。 POSIX 也会在这里返回相同的结果。
标签: regex alternation