[英]Using backreference wit php preg_match_all
我在regex和php中是一个新手,但是我面临一个我无法独自处理的问题。
我已经准备好此正则表达式来查找以大写字母开头的模式。 听起来像是:
捕获任何模式
以一个或多个大写字母开头
然后列表中的一个或多个字母或字符
然后是空格或标点符号
并且我使用向后引用来设置我希望这些模式最多3次:
([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\\s-….?,;]\\1{1,3})
根据https://regex101.com/r/pB3nY7/2,它可以用作javascript regex,但不能用作php regex。
我已经突袭了其他职位,并确保:
我使用单引号而不是双引号
并且我在PHP脚本中“保护了” \\:
'#([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\\\\s-….?,;]\\\\1{1,3})#'
但是它仍然不能匹配以大写字母开头的任何模式。
预先感谢您提供的所有建议,
问候,
查尔斯
我已经在此网站http://www.phpliveregex.com/上对其进行了测试:
(^[A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]{1,1}){1,3}
为了更加笼统,您可以使用unicode属性:
^(\p[Lu}+[\p{Ll};:«0-9]+[\s\p{P}]){1,3}
其中\\p[Lu}
代表大写字母, \\p{Ll}
小写字母, \\p{P}
标点符号。
preg_match('/^(\p[Lu}+[\p{Ll};:«0-9]+[\s\p{P}]){1,3}/', $string, $match);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.