2013-03-24 52 views
-4

你好朋友我是新的模式匹配在PHP中。什么“。”意味着在正则表达式

我想这个代码之间找到“@”和“空间”

<?php 
    $pattern = "%@(.*?)\s%"; 
    $string = "this is @test string @match "; 
    preg_match_all($pattern, $string, $match); 
    echo "<pre>"; 
    print_r($match); 
    echo "</pre>"; 
    ?> 

它工作正常,没有错误的文字... 我的问题是什么呢“”意味着在这个 我知道像

% is terminaor 
(start of substring 
) end of substring 
* 0 or more match 

等其他符号的意思..但不明白的使用“”在这里.. 任何机构可以解释它。而纠正我,如果我错了,其他地方提前

+7

'.'表示任何字符 – Class 2013-03-24 04:45:32

+0

以下是PHP手册中的页面,可以解答您的所有问题,例如:http://www.php.net/manual/en/reference.pcre.pattern.syntax.php – 2013-03-24 04:51:18

+0

感谢所有得到它:) – alwaysLearn 2013-03-24 05:00:12

回答

2

.匹配除换行符外的任何字符。在你的情况下,它将匹配@和换行符之外的任何空格,或者它可以是'@ ',因为你有.*?,这意味着它对于通配符.是可选的。有.检查一切,包括换行,您的分隔符%如后面添加s...%ss (PCRE_DOTALL)

1

.

感谢匹配除换行符其他任何东西,但只有一个角色。

+0

它是否按[默认](http://www.php.net/manual/en/regexp.reference.meta.php#regexp.reference.meta)匹配换行符? = oP – 2013-03-24 04:50:23

+1

不,你需要一个特殊的标志。正则表达式是默认的*行*工具 – 2013-03-24 04:53:54

+3

这不完全正确。默认情况下,它不符合换行符\ n。 – Gene 2013-03-24 05:09:12

0

.表示它将匹配任何字符。

+2

它是否与[new]匹配[default](http://www.php.net/manual/en/regexp.reference.meta.php#regexp.reference.meta)? = oP – 2013-03-24 04:49:28

+0

在大多数正则表达式中,没有。 '.'实际上是''^'n]'在unix口味的正则表达式和'[^ \ r \ n]'口味上的别名。 – 2013-03-24 04:54:09

0

.指任何字符。通配符,如果你愿意的话。当你想要匹配一个模式时,你会发现它很有用,前/后什么,但你不希望自己麻烦自己是什么。

在上面的正则表达式中,您匹配@,然后是任意数量的字符,直到找到空格。期间允许您不关心您的模式是@[还是@lorem76-ipsum。它会匹配。