PHP:正则表达式查询

时间:2013-03-20 20:13:55

标签: php regex

$ regex ='/ [aeiou] * /'

那匹配“aeiioauo” 或者只是“aaaaaaaaaaa”,“eeeeeee”,“iiiii”等(集合中只有一个字符中的零个或多个)。

谢谢

4 个答案:

答案 0 :(得分:4)

由于这里没有认真的答案,我会给出一个认真的答案。

当你通过时:

$regex = '/[aeiou]*/'

preg_matchpreg_match_all(或其他一些功能),它会报告任意字符串的匹配。

preg_matchpreg_match_allpreg_replacepreg_replace_callback默认情况下都会找到非重叠 子串匹配正则表达式。 (其他语言可能具有断言整个字符串与正则表达式匹配的函数,这是不同的。)

[aeiou]*将匹配任何元音(英文), 0 或更多次,连续出现。由于正则表达式在没有任何字符时匹配(空字符串),并且空字符串可以在任何字符串中的任何位置,因此您将始终获得至少一个匹配。

要检查字符串是否只包含元音,您需要锚定正则表达式,^表示字符串的开头{{1表示字符串的结尾:

$

上面的正则表达式只会在输入字符串只包含元音时匹配,或者是空字符串 匹配示例:$regex = '/^[aeiou]*$/' ,(空字符串),aeuuuooiiii 不匹配的示例:aaaaaaaaaaab

如果你想匹配输入字符串中元音的一些连续序列(子串),你应该使它至少匹配1个元音:所以我们使用#@#$代替+

*

匹配示例:$regex = '/[aeiou]+/' 中的eeeeiiuo; ffffeeeeddiiuo中的e 不匹配的示例:不匹配red

希望这有助于初学者的教程。

答案 1 :(得分:1)

是的,它会的。 []表示任何一组,因此它符合要求。但是由于你没有其他条件,这也会匹配任何其他字符串。

答案 2 :(得分:0)

正则表达式将匹配它可以使用的所有字符,因为默认情况下正则表达式是贪婪的。顺便说一下:它不仅会匹配iiiii等,还会匹配aeiio等等。

答案 3 :(得分:0)

使用该正则表达式将匹配" aeiioauo"或者只是" aaaaaaaaaaa," " eeeeeee"," iiiii"

但它也会匹配空格,因此" aaaaeeee iiiiii"将匹配为

Array
(
   [0] => Array
   (
        [0] => aaaaeeee
        [1] => 
        [2] => iiiiii
        [3] => 
        [4] => 
    )

) 

而不是

Array
(
    [0] => Array
    (
        [0] => aaaaeeee
        [1] => iiiiii
    )

)

所以我建议更改' *'到一个' +'

FROM --> $regex = '/[aeiou]*/';

TO   --> $regex = '/[aeiou]+/';

编辑:这是一个用于测试php中正则表达式的有用站点

http://www.pagecolumn.com/tool/pregtest.htm