PCRE“或”操作员行为?

时间:2016-02-03 01:24:45

标签: regex pcre

如果我有1)/foo|oo/ 2)/oo|foo/并使用PCRE并将其与字符串“foo”匹配,则预期结果为

  1. 1)foo 2)oo。 PCRE保持“或”命令。
  2. foo。 PCRE尝试所有变种并进行最长时间的匹配。
  3. 没有预设规则,优化器可能会根据需要重新排序。开发人员有责任避免像这样的模糊场景。
  4. 有规则,但不是2。
  5. “尝试并看到”似乎杀了1.)但是没有办法通过反复试验确定2-3-4之间。

1 个答案:

答案 0 :(得分:2)

4)获取最接近字符串开头的匹配项。当可以从当前位置进行多次匹配时,请匹配更早匹配的选项。

e.g。

banana/na/匹配(以大写字母显示匹配):baNAna(早于banaNA)。对/an|b/,匹配Banana(早于bANana)。对于/ba|./,匹配BAnana(相同的位置,因此ba匹配.之前)。对于/.|ba/,匹配Banana(相同的位置,.之前的ba匹配。)