簡體   English   中英

preg_match字符串

[英]preg_match string

有人可以解釋一下這種模式的含義。

preg_match(/'^(d{1,2}([az]+))(?:s*)S (?=200[0-9])/','21st March 2006','$matches);

如果我錯了,請糾正我:

    ^        = beginning of the line   
    d{1,2}   = digit with minimum 1 and maximum 2 digits  
    ([a-z]+) = one or more letters from a-z
    (?:s*)S  = no idea...  
    (?=      = no idea...
    200[0-9] = a number, starting with 200 and ending with a number (0-9)

有人可以填寫此列表嗎?

regular-exressions.info是非常有用的資源。

/'^(d{1,2}([az]+))(?:s*)S (?=200[0-9])/

(?:regex)是非捕獲括號; 它們在你的例子中不是很有用,但是可以用來表示像(?:bar)+這樣的東西,意思是1或者更多的bar

(?=regex)做了一個積極的前瞻,但匹配的位置而不是內容。 因此,您的示例中的(?=200[0-9])使正則表達式僅與前十年的日期匹配, 而不匹配年份本身。

這是一個很好的圖表由strfriend提供

^(d {1,2}([a-z] +))(?:s *)S(?= 200 [0-9])

但我認為你可能意味着^(\\d{1,2}([az]+))(?:\\s*)\\S (?=200[0-9])帶有反斜杠,它給出了這個圖

^(\\ d {1,2}([a-z] +))(?:\\ s *)\\ S(?= 200 [0-9])

也就是說,此正則表達式匹配字符串的開頭,后跟一個或兩個數字,一個或多個小寫字母,零個或多個空白字符,一個非空白字符和一個空格。 此外,所有這些都必須在2000年到2009年之間跟隨一個數字,盡管這個數字實際上並不與正則表達式相匹配 - 它只是一個前瞻性的斷言。 此外,前導數字和字母都被捕獲到$matches[1] ,而只是字母變成$matches[2]

有關PHP的PCRE regexp語法的更多信息,請參閱http://php.net/manual/en/pcre.pattern.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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