Регулярное выражение для извлечения каждого слова между дефисами - PullRequest
0 голосов
/ 19 мая 2018

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

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

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

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

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

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

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

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

* 1007.* Затем вы можете захватить в группу ([^-.]+), не соответствующую ни дефису, ни точке.

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

0 голосов
/ 19 мая 2018

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

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

Также проверьте аналогичную реализацию: https://stackoverflow.com/a/50336050/8179245

...