У меня есть строка источника, который выглядит следующим образом: mID00231mID00008mID00231mID00054mID00013mID00008mID00065
Matching, если все BCD..n существовать после последнего вхождения
Узор Я пытаюсь создать, используя этот пример, является: Для последнего вхождения из "mID00231" в строке, один или несколько вхождения каждый из {mID00054, mID00013, mID00008, mID00065} должен следовать за ним (в любой заказ).
Примеры матчей:
mID00231mID00008mID00231mID00054mID00013mID00008mID00065
mID00231mID00013mID00054mID00008mID00065mID00008
Пример не матча из-за отсутствия «mID00065»:
mID00231mID00054mID00013mID00008
примере не матча, так как последнее вхождение «mID00231» не сопровождаемый «mID00054» и «mID00008»:
mID00231mID00013mID00065mID00054mID00008mID00231mID00013mID00065
Я довольно новичок в регулярном выражении, но обычно прихожу так что работает. Это было очень сложно. Я пробовал:
(?:mID00231)(?:(?=.*mID00054)(?=.*mID00013)(?=.*mID00008)(?=.*mID00065).*)
Он работает, если есть только одно вхождение первого элемента (mID00231). Если элемент повторяется, шаблон не работает. Любая помощь приветствуется.
Когда вы говорите «за которым следует», вы имеете в виду «сразу последовали»? – redneb
Это регулярное выражение 'mID00231 ((? = (? :(?! mID00231).) * MID00054) (? = (? :(? mID00231).) * MID00013) (? = (? :(?! mID00231).) * mID00008) (? = (? :(? mID00231).) * mID00065) (? :(? mID00231).) *) 'выглядит ужасно. Вы уверены, что вам нужно регулярное выражение? –
Хорошо, вы можете заменить закаленные жадные жетоны более простыми взглядами. –