Member 11748901 Ответов: 2

Регулярное выражение для извлечения текста из сложной строки


Моя строка содержит
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);

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

Что я уже пробовал:

Я попробовал с
ids = str.match(/([^"(])[^@\(]+?(?=\))+/g);

2 Ответов

Рейтинг:
0

OriginalGriff

Попробуй:

(?<=@\[.*?\]\()\d+

Это даст вам два совпадения: "89" и "91".
С этого момента ваш код может делать с ними все, что ему заблагорассудится.

Если вы собираетесь использовать регулярные выражения, то получите копию Экспрессо[^] - это бесплатно, и он проверяет, генерирует и тестирует регулярные выражения.


Member 11748901

Спасибо

Я только что видоизменился

(?<=@\[.+?\]\()\d+(?=\))+

OriginalGriff

Всегда пожалуйста!

Рейтинг:
0

Patrice T

Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение: Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению: Regexper[^]