Регулярное выражение в JavaScript, как найти контент между двумя «специальными» символами? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть следующая строка текста, мне нужно найти содержимое внутри $$ и извлечь значения для id= и description=.

Не могли бы вы указать мне правильное направление,Я пытался несколько раз безуспешно (на самом деле я пробовал это ^\$\$(.*?)\$\$)

$$id=uniq_id&description=some_description$$ Any text after
// result should be: ['uniq_id', 'some_description', 'Any text after']

$$id=uniq_id$$ Any text after
// result should be: ['uniq_id', '', 'Any text after']

Any text after
// result should be: ['','','Any text after']

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы используете 1 группу захвата (.*?) для захвата между $$ и $$.

Если должно быть id и описание является необязательным, вы можете использовать 3 группы захвата, гдечасть, соответствующая описанию, является необязательной`:

^\$\$id=(\w+)(?:&description=(\w+))?\$\$(.*)

Regex demo

const regex = /^\$\$id=(\w+)(?:&description=(\w+))?\$\$(.*)/;
const strings = [
  "$$id=uniq_id&description=some_description$$ Any text after",
  "$$id=uniq_id$$ Any text after"
];

strings.forEach((s) => {
  console.log(s.match(regex));
});
0 голосов
/ 07 декабря 2018

Шаблон, такой как

\$\$(?:id=(\w+))?(?:&description=(\w+))?

, должен работать для этого.

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