[英]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.