【发布时间】:2016-02-17 13:09:53
【问题描述】:
我是 regex 和 php 的新手,但我面临一个我无法单独处理的问题。
我准备了这个正则表达式来查找以大写字母开头的模式。听起来可能是这样的:
捕获任何模式
以一个或多个大写字母开头
然后是列表中的一个或多个任意字母或字符
然后是空格或标点符号
-
我使用反向引用来设置我想要这些模式最多 3 次:
([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]\1{1,3})
根据https://regex101.com/r/pB3nY7/2,它可以用作 javascript 正则表达式,但不能用作 php 正则表达式。
我已经评价了其他帖子并确保:
我用单引号代替双引号
-
我在我的 php 脚本中“保护”了 \:
'#([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\\s-….?,;]\\1{1,3})#'
但它仍然无法匹配任何以大写字母开头的模式。
提前感谢您提供的所有建议,
问候,
查尔斯
【问题讨论】:
-
在 PCRE 中,Group 1 中的
\1仍未初始化,因此失败。 JS 的行为不同,\1如果未初始化,则始终为空字符串。我认为您在这里根本不需要\1。请参阅([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]{1,3})演示。它不符合您的需求吗? -
谢谢维克托。我想借此正则表达式的机会来了解反向引用是如何工作的,但是您的解决方案更容易。谢谢
-
我应该发帖作为答案吗?
标签: php regex backreference