Регулярное выражение для извлечения каждого слова между дефисами
Я изучаю регулярные выражения и пытаюсь написать шаблон, который точно соответствует каждой из строк без '-', чтобы я мог выполнить итерацию для каждой из групп и вывести соответствующие строки.
У меня есть строка, которая выглядит как "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