我是正则表达式和php的新手,但我面临一个我无法单独处理的问题。
我已经准备好了这个正则表达式来查找以大写字母开头的模式。听起来像是:
捕获
以一个或多个大写字母
然后列表中的一个或多个字母或字符
然后是空格或标点符号
我使用反向引用设置我希望这些模式最多3次:
([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]\1{1,3})
根据https://regex101.com/r/pB3nY7/2,它可以作为javascript正则表达式,但不能作为php正则表达式。
我已经对其他帖子进行了调查并确保:
我使用单引号而不是双引号
我和#34;受保护"我的PHP脚本中的\:
'#([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\\s-….?,;]\\1{1,3})#'
但它仍然无法匹配任何以大写字母开头的模式。
提前感谢您提供的所有建议,
此致
查尔斯
答案 0 :(得分:0)
我在这个网站上http://www.phpliveregex.com/进行了测试:
(^[A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]{1,1}){1,3}
答案 1 :(得分:0)
为了更通用,您可以使用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);