У меня есть список строк. Некоторые из них имеют форму 123-...456
. Переменная часть "..." может быть:
- строка «яблоко», за которой следует дефис, например
123-apple-456
- строка «банан» с последующим дефисом, например
123-banana-456
- пустая строка, например
123-456
(обратите внимание, что есть только один дефис)
Любое слово, кроме «яблоко» или «банан», является недействительным.
Для этих трех случаев я бы хотел сопоставить «яблоко», «банан» и «» соответственно. Обратите внимание, что я никогда не хочу захватывать дефис, но я всегда хочу соответствовать ему. Если строка не имеет форму, 123-...456
описанную выше, тогда совпадения не будет.
Как мне написать регулярное выражение для этого? Предположим, у меня есть аромат, который позволяет группам «смотреть вперед», «смотреть назад», «смотреть вокруг» и «не захватывать».
Ключевое наблюдение здесь заключается в том, что когда у вас есть «яблоко» или «банан», у вас также должен быть конечный дефис, но вы не хотите, чтобы он соответствовал. И когда вы сопоставляете пустую строку, у вас не должно быть завершающего дефиса. Я думаю, правильное выражение, которое заключает в себе это утверждение, будет правильным.