2013-03-24 50 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。它會匹配。