簡體   English   中英

使用反向引用機智php preg_match_all

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM