Соответствующая часть регулярного выражения в подстроках - PullRequest
1 голос
/ 21 января 2020

edit: см. Соответствие части регулярного выражения в подстроках

Я не знаю, подходит ли заголовок, но позвольте мне привести несколько примеров.

это шаблон я придумал:

/(---+\s*([^\s-]+)\s*---+)(.*?)(---+\s*[^\s-]+\s*---+)/gs

Это сценарии ios:

--- content ---

lorem ipsum dolor sit amet
--- --- --- --- --- ---
Suspendisse nec dui in orci ullamcorper porttitor. 
Sed lobortis dui ut placerat tempor. Donec lacus nibh, porta vitae mattis ac, facilisis dictum ipsum.

--- content ---
--- sub-content 1 ---

lorem ipsum dolor sit amet
--- --- --- --- --- ---
Suspendisse nec dui in orci ullamcorper porttitor. 
Sed lobortis dui ut placerat tempor. Donec lacus nibh, porta vitae mattis ac, facilisis dictum ipsum.

--- sub-content 1 ---
--- sub-content 1 2 3 ---

lorem ipsum dolor sit amet
--- --- --- --- --- ---
Suspendisse nec dui in orci ullamcorper porttitor. 
Sed lobortis dui ut placerat tempor. Donec lacus nibh, porta vitae mattis ac, facilisis dictum ipsum.

--- sub-content 1 2 3 ---

Я могу совпасть, если подсчет пробелов известен, но не могу выяснить, где отсчет пробелов между непробельными символами неизвестно. По сути, я хочу сопоставить все строки, если между первым и конечным символом есть пробел ---XXX---

1 Ответ

1 голос
/ 21 января 2020

Вы можете использовать следующее регулярное выражение с многострочным флагом (обратите внимание, что вам не нужен какой-либо флаг, если вы используете шаблон в Ruby):

^(---+\s+([^\s-].*?)\s+---+)$(.*?)^(---+\s+([^\s-].*?)\s+--+)$

См. regex demo . Я добавил начальные / конечные якоря ^ и $ и изменил [^\s-]+, который не допускает никаких внутрисловных дефисов, на [^\s-].*?, для которого требуется символ, отличный от пробела и дефиса, а затем все, вплоть до конечных дефисов.

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