Regex для разделения phpdoc многострочного комментария

У меня есть это:

/**
 * @file
 * API for loading and interacting with modules.
 * More explaination here.
 *
 * @author  Reveller <me@localhost>
 * @version 19:05 28-12-2008
 */

Я ищу regex для разделения всех кроме @token данных, таким образом, результат был бы:

@file API for loading and interacting with modules. More explaination here.
@author Reveller <me@localhost>
@version 19:05 28-12-2008

У меня теперь есть это:

$text = preg_replace('/\r?\n *\* */', ' ', $text);

Это делает задание частично: это только удаляет * перед каждой строкой. Кто мог помочь мне так, это также разделяет / ** и заключительная наклонная черта/? Любая справка значительно ценилась бы!

P.S.: Если бы, например, commentlbock содержал бы что-то как

/**
 * @foo Here's some slashes for ya: / and \
 */

Затем, очевидно, наклонные черты после @foo не могут быть разделены. reult должен был бы быть:

@foo Here's some slashes for ya: / and \

Я надеюсь, что там существует regex гуру :-)

5
задан Pr0no 1 May 2010 в 10:52
поделиться

1 ответ

Попытка

$result = preg_replace('%(\r?\n(?! \* ?@))?^(/\*\*\r?\n \* | \*/| \* ?)%m', ' ', $subject);

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

Объяснение:

(\r?\n(?! \* ?@))?: Если возможно, сопоставьте новую строку, если за ней не следует * @

^: Утверждение, что следующее совпадение начинается с начала строки

(: Либо совпадение

/\*\*\r?\n \*: /** *

| или

\*/: */

|: или

\* ?: *, по желанию за ним следует еще один пробел

): Конец последовательности чередования

.
4
ответ дан 15 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: