Можно ли составить регулярное выражение так, чтобы оно обрабатывало строки в кавычках иначе, чем все остальное?

Доброго вечера.
Есть регулярка, которая парсит строку вида:
@param name type value
Сама регулярка выглядит так (regexr):
$regexp = '/(?![@param*])([\S\-\|]+)/';
Ее работа заключается в том, что она разбивает строку по пробелам, не считая при этом ключевого слова @param. Сейчас возникла необходимость иметь возможность писать так:
@param name type "Тут может быть любая строка"
Само собой, на данный момент строка в кавычках будет разбита по пробелу. Как можно сделать так, чтобы любая область внутри кавычек обрабатывалась иначе, чем вся остальная строка? Было бы круто дописать что-то вроде (^\"[.]\"$) и получить отдельную группу с подстрокой, но это не работает.

Буду благодарен за советы, спасибо.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@Alexander1705
(?![@param*])((?:"[^"]+")|(?:[\S]+))

Или вот так, чтоб можно было экранировать кавычки:
(?![@param*])((?:"(?:(?:\\")|(?:[^"]))+")|(?:[\S]+))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы