Regex получает значение между фигурными скобками, включая фигурные скобки с разделением - PullRequest
1 голос
/ 18 марта 2020

Я пытаюсь построить регулярное выражение для разделения в Javascript, которое будет разбивать строку на каждую позицию, где есть скобки с текстом внутри {t}.

У меня проблема с выражением Regex. На данный момент у меня есть выражение Regex, которое соответствует фигурным скобкам {}, но когда я разделю строку на этих фигурных скобках, фигурные скобки будут удалены функцией разделения.

Итак, представьте, что у меня есть строка: " Меня зовут {имя}, и мне {лет} лет ". На этой строке я буду использовать выражение ниже:

const splitted = value.split(/[{}]+/g); // Value is "My name is {name} and I am {years} old"
console.log(splitted); 

Над консолью.log показано

["My name is ,", "name", " and I am ", "years", " old"]

Но я хочу

["My name is ,", "{name}", " and I am ", "{years}", " old"]

Что я делаю неправильно

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Вы можете использовать это регулярное выражение с группой захвата:

const s = "My name is {name} and I am {years} old";

var arr = s.split(/({[^}]*})/g);

console.log(arr);

{[^}]*} соответствует подстроке, которая начинается с { и заканчивается }, и, поместив группу захвата вокруг этого шаблона, мы гарантируем, что эта группа является частью split результат.

1 голос
/ 19 марта 2020

Мы можем использовать для этого ленивый квантификатор.

const s = "My name is {name} and I am {years} old";

var arr = s.split(/({[^]*?})/g);

console.log(arr);

Ленивый квантификатор *? дает вам самое короткое совпадение, которое соответствует регулярному выражению.

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