У меня есть строки, поступающие в мое приложение. Каждая входящая строка состоит из подстрок без пробелов между подстроками. Например, «ID1ID1ID1ID2ID2ID2», где «ID1» является подстрокой, а «ID2» - подстрокой. Я хочу регулярное выражение, которое может обнаружить, когда есть шаблон, в котором подстрока окружает набор подстрок, который не содержит первую подстроку. Так, например, «ID1ID2ID1», «ID1ID1ID3ID1» и «ID1ID2ID3ID2ID1» будут соответствовать всем. Наряду с входящей строкой, у меня есть первая подстрока в этой строке (то есть ID1). Итак, используя эту первую подстроку, я хочу сказать: «Сопоставьте любое количество ID1, затем (любая строка, которая не является ID1), а затем любое количество ID1».Как я могу сопоставить этот шаблон с использованием регулярного выражения?
В качестве примера, что я пытался до сих пор:
.*ID1.*[^ID1]+ID1.*
Я просто использовал regexpal, чтобы проверить это, и это, кажется, работает нормально. Есть ли лучший способ сделать это? Я искал использование lookarounds, но я не мог видеть, как их использовать, поскольку lookaround не потребляет какую-либо часть строки. Кроме того, факт, что я использую [^ ID1], кажется неправильным, так как это просто проверяет, чтобы символы I, D и 1 не использовались. Спасибо.
'[^ ID1]' не будет делать то, что вы хотите .. –
Это все зависит от длины подстроки. Подстрока всегда 3 символа? – sln
Нет, это не обязательно 3 символа. – Nick