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

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

У меня есть строка, которая выглядит как "Abcd001-wd2s-vwe1-20180e3103.txt"

Я смог написать регулярное выражение для извлечения Abcd001, wd2s и.txt из текста выше, как показано ниже

(\A[^-]+)=> Abcd001
(-[^-]+-)=> wd2s
(\..*)=>.txt

Однако я не смог придумать правильный шаблон для извлечения точных строк vwe1 и 20180e3103

Будет ли действительно полезным, если вы можете мне помочь в этом или есть лучший подход для достижения этой цели?

Пожалуйста, обратите внимание: [^-.]+ может дать мне все слова по отдельности, но я ищу вариант, где у меня есть группа, определенная для каждой из этих строк, так что ее сопоставление один к одному.

Спасибо!

2 ответа

Решение

Получить vwe1 или же 20180e3103 из данных примера вы можете использовать квантификатор {2} или же {3} повторить сопоставление одного или нескольких символов слов с последующим дефисом (?:\w+-){2},

Тогда вы могли бы захватить в группе ([^-.]+) не соответствует ни дефису, ни точке.

(?:\w+-){2}([^-.]+)

Попробуйте следующее регулярное выражение

/\-([^\)]+)\-/gmi;

Также проверьте аналогичную реализацию: /questions/34753177/zamenit-tekst-v-html-tekstovoj-oblasti/34753189#34753189

Другие вопросы по тегам