Регулярное выражение для соответствия " %% " - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь сопоставить строку типа abc%%def. Единственное, что я хочу добавить к этому правилу, это то, что первая часть перед %% (abc здесь) и вторая часть после %% (def здесь) не должна быть строкой, содержащей %%.

То есть, выполняя что-то вроде (.+)%%(.+), оно также соответствует abc%%def%%ghi, а первая часть сопоставляется с abc%%def, чего я не хочу разрешать.

Какое правильное регулярное выражение для этого?

1 Ответ

1 голос
/ 03 августа 2020

Вы можете использовать следующее регулярное выражение:

^((?:(?<!%)%(?!%)|[^%])+)%%((?:(?<!%)%(?!%)|[^%])+)$

Regex Demo

Подробности:

^: начало строки

((?:(?<!%)%(?!%)|[^%])+): несоответствующая группа, в которой указано, что символ не должен быть % или, если это %, он не должен иметь другого % до после этого. это будет go для жадных.

%%: 2 символа, которые должны быть разделителями

((?:(?<!%)%(?!%)|[^%])+) тот же шаблон для символов после разделителя

$: конец строки

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