2013-03-24 2 views
-4

привет друзья Я новичок в сопоставлении с образцом в php.Что такое "." означает в regex

Я попробовал этот код, чтобы найти текст между «@» и «пространство»

<?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

+0

Вот страница руководства PHP, которая отвечает на все ваши вопросы следующим образом: http://www.php.net/manual/en/reference.pcre.pattern.syntax.php –

+0

спасибо всем, что получил :) – alwaysLearn

ответ

2

. соответствует любому символу, кроме символов новой строки. В вашем случае это будет соответствовать любому значению @ и пробелу, за исключением символов новой строки, или может быть только '@ ', так как у вас есть .*?, что означает, что он не является обязательным для дикой карты .. Для того, чтобы иметь ., чтобы проверить все, включая символ новой строки, добавьте s после разделителем % например: ...%ss (PCRE_DOTALL)

1

The . соответствует ничего, кроме символа новой строки, но только один символ.

+0

Соответствует ли он символу новой строки [default] (http://www.php.net/manual/en/regexp.reference.meta.php#regexp.reference.meta)? = oP –

+1

Нет, для этого вам нужен специальный флаг. Regex - это инструмент * line * по умолчанию –

+3

Это не совсем правильно. По умолчанию он не соответствует новой строке \ n. – Gene

0

. означает, что он будет соответствовать любому персонажу.

+2

Соответствует ли он символу новой строки [default] (http://www.php.net/manual/en/regexp.reference.meta.php#regexp.reference.meta)? = oP –

+0

В большинстве вкусов регулярного выражения нет. '.' действительно является псевдонимом для' [^ \ n] 'для unix-ароматизаторов регулярных выражений и' [^ \ r \ n] 'для вкусов Windows. –

0

. означает любой символ. Подстановочный знак, если хотите. Вы найдете его полезным, когда вам захочется сопоставить шаблон, за которым следует/последовали что-нибудь, но вы не хотите беспокоиться о том, что это за вещь.

В приведенном выше регулярном выражении вы соответствуете @, а затем любое количество символов, пока не получите пробел. Период позволяет вам не заботиться о том, является ли ваш шаблон @[ или @lorem76-ipsum. Он будет соответствовать.

Смежные вопросы