[英]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}([az]+))(?:\\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.