У мене є список рядків. Деякі з них мають форму 123-...456
. Частина змінної "..." може бути:
- рядок "яблуко" з наступним дефісом, напр
123-apple-456
- рядок "банан" з наступним дефісом, напр
123-banana-456
- пустий рядок, наприклад
123-456
(зауважте, що є лише один дефіс)
Будь-яке слово, крім "яблуко" або "банан", недійсне.
У цих трьох випадках я хотів би відповідати "яблуко", "банан" і "" відповідно. Зауважте, що я ніколи не хочу захоплювати дефіс, але завжди хочу відповідати йому. Якщо рядок не має такої форми, 123-...456
як описано вище, то це взагалі не відповідає.
Як написати регулярний вираз для цього? Припустимо, у мене є аромат, який дозволяє шукати групи, дивлячись позаду, шукати навколо та не захоплювати групи.
Основне зауваження тут полягає в тому, що коли у вас є або "яблуко", або "банан", ви також повинні мати дефіс, але не хочете його відповідати. І коли ви співпадаєте з порожнім рядком, у вас не повинно бути дефісу. Я думаю, що правильний вираз, який інкапсулює це твердження, буде правильним.