繁体   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