PHP регулярное выражение, разделяющее строку на две - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь разбить

EQUAL(title, "Alphabet"),EQUAL(content, "A, B") )

на массив

[EQUAL(title, "Alphabet"), EQUAL(content, "A, B")]

Все, что мне удалось сделать, это взять всю строку. Мое регулярное выражение:

EQUAL\s*\(.+,\s*"?.+"?\)

Вот мое Regex101 https://regex101.com/r/bImYwM/1/.

Любая помощь будет отличной.

1 Ответ

0 голосов
/ 05 августа 2020

Вы можете сопоставить любой символ, кроме , для первой части и любой символ, кроме ", между двойными кавычками для второй части, используя класс отрицательных символов , который начинается с [^

\bEQUAL\s*\([^,]+,\s*"[^"]+"\)

Regex demo


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

Если должно быть совпадение только в той же строке, вы можете исключить совпадение новых строк из инвертированного символьного класса и использовать \h для соответствует горизонтальному пробельному символу.

\bEQUAL\h*\([^,\r\n]+,\h*"[^"\r\n]+"\)

Regex demo

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