PCRE "or" 运营商行为?
PCRE "or" operator behavior?
如果我有 1) /foo|oo/
2) /oo|foo/
并使用 PCRE 并将其与字符串 "foo" 进行匹配,则预期结果为
- 1)
foo
2) oo
。 PCRE 保持 "OR" 秩序。
foo
。 PCRE 尝试所有变体并进行最长匹配。
- 没有预设规则,优化器可能会根据需要重新排序。开发人员有责任避免出现这种模棱两可的情况。
- 有规则但不是2.
"Try it and see"好像是杀了1。)但是没有办法通过反复试验来确定2-3-4之间。
4) 获取最接近字符串开头的匹配项。当从当前位置开始可能有多个匹配项时,尽快匹配匹配的选项。
例如
banana
匹配 /na/
(显示大写匹配):baNAna
(早于 banaNA
)。针对 /an|b/
,匹配 Banana
(早于 bANana
)。针对 /ba|./
,匹配 BAnana
(相同位置,因此 ba
匹配 .
之前)。针对 /.|ba/
,匹配 Banana
(相同位置,因此 .
匹配 ba
之前)。
如果我有 1) /foo|oo/
2) /oo|foo/
并使用 PCRE 并将其与字符串 "foo" 进行匹配,则预期结果为
- 1)
foo
2)oo
。 PCRE 保持 "OR" 秩序。 foo
。 PCRE 尝试所有变体并进行最长匹配。- 没有预设规则,优化器可能会根据需要重新排序。开发人员有责任避免出现这种模棱两可的情况。
- 有规则但不是2.
"Try it and see"好像是杀了1。)但是没有办法通过反复试验来确定2-3-4之间。
4) 获取最接近字符串开头的匹配项。当从当前位置开始可能有多个匹配项时,尽快匹配匹配的选项。
例如
banana
匹配 /na/
(显示大写匹配):baNAna
(早于 banaNA
)。针对 /an|b/
,匹配 Banana
(早于 bANana
)。针对 /ba|./
,匹配 BAnana
(相同位置,因此 ba
匹配 .
之前)。针对 /.|ba/
,匹配 Banana
(相同位置,因此 .
匹配 ba
之前)。