Извлечь текст из сложной строки - PullRequest
1 голос
/ 11 октября 2019

Моя строка содержит

str = "Its a test string @[test_u](89) and @[test_v](91), lets try it."

И я извлекаю

usernames = str.match(/([^"@\[])[^@\[]+?(?=\]\([1-9]+[0-9]*\))+/g); // ["test_u","test_v"]

И мне нужно извлечь идентификаторы аналогичным образом инужно ["89", "91"]

У меня есть неполное регулярное выражение как ids = str.match(/([^"(])[^@\(]+?(?=\))+/g);

Пожалуйста, предложите регулярное выражение для извлечения идентификаторов.

Спасибо

1 Ответ

2 голосов
/ 11 октября 2019

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

var rx = /@\[([^\][]+)]\((\d+)\)/g;
var s = "Its a test string @[test_u](89) and @[test_v](91), lets try it."
var keys=[],ids=[], m;
while (m = rx.exec(s)) {
  keys.push(m[1]);
  ids.push(m[2]);
}
console.log(keys);
console.log(ids)

См. Демоверсию regex . Он соответствует:

  • @\[ - последовательность символов @[
  • ([^\][]+) - Группа 1: любой один или несколько символов, отличных от ] и [
  • ]\( - подстрока ](
  • (\d+) - группа 2: одна или несколько цифр
  • \) - ) символ.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...