Regex - Вложенные совпадения - PullRequest
0 голосов
/ 08 октября 2019

Когда следующему регулярному выражению - \d\[\w*] дается входная строка - asd3[bc]de, оно будет соответствовать 3[bc]. Когда данный ввод, такой как 3[bc4[de]], имеет вложенные совпадения, он соответствует внутреннему шаблону 4[de], а не внешнему. Почему это так? Есть ли способ заставить регулярное выражение соответствовать внешнему шаблону?

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

let re = /\d\[\w*]?(\d\[\w*])]/;
let str = "3[bc4[de]]";
console.log([...str.match(re)]);
0 голосов
/ 08 октября 2019

\w не будет соответствовать '['.

* \d\[ соответствует 3[, тогда \w* соответствует bc4, но не будет соответствовать внутреннему '[',Итак, движок регулярных выражений должен отследить и найти другое совпадение для \d\[. Это соответствует 4[, \w* соответствует de, а затем ] s.

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

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