PHP Regexp помощь - PullRequest
       1

PHP Regexp помощь

1 голос
/ 18 января 2010

Я не могу понять, что намеревается извлечь это выражение:

preg_match("/^(?:[\s\*]*?@([^\*\/]+?)\s(.+))/",$line,$match);

$ line - это строка из текстового файла, а $ match - это массив

Ответы [ 4 ]

6 голосов
/ 18 января 2010

Вот объяснение:

^               # match the beginning of the input
(?:             # start non-capture group 1 
  [\s*]*?       #   match any character from the set {'0x09'..'0x0D', '0x20', '*'} and repeat it zero or more times, reluctantly
  @             #   match the character '@'
  (             #   start capture group 1
    [^*/]+?     #     match any character from the set {'0x00'..')', '+'..'.', '0'..'ÿ'} and repeat it one or more times, reluctantly
  )             #   end capture group 1
  \s            #   match a whitespace character: [ \t\n\x0B\f\r]
  (             #   start capture group 2
    .+          #     match any character except line breaks and repeat it one or more times
  )             #   end capture group 2
)               # end capture group 1

Пример строки, которой будет соответствовать регулярное выражение: * * *@abc asd

Редактировать:

Я выпустил бета-версию синтаксического анализатора, который использовался для генерации объяснения выше. Его можно скачать здесь: http://big -o.nl / apps / pcreparser / pcre / PCREParser.html

2 голосов
/ 18 января 2010

Вероятно, пытается захватить строки блоков комментариев, подобные этим (исключая первую и последнюю строку):

/**
 * @param  $arg1 etc...
 * @return bool etc...
 */
0 голосов
/ 18 января 2010

@ заставляет меня думать, что шаблон пытается захватить элемент электронного письма ... как ROT всегда документируйте регулярное выражение.

0 голосов
/ 18 января 2010

Это будет соответствовать строкам вида

** *  ***@anything_that_is_not_an_asterisk_nor_a_slash   anything else

$match[1] содержит "anything_that_is_not_an_asterisk_nor_a_slash" перед первым пробелом, $match[2] содержит " anything else".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...