Я столкнулся с проблемой, когда мне нужно было найти номер в наборе чисел, где все начинаются одинаково, но заканчиваются по-разному, например:
261234
261235
261236
261334
261244
261134
260234
260134
260123
Могу добавить, что это было в журналефайл с каким-то другим бредом, который может усложнить проблему. Скажем, я хочу сопоставить что угодно, кроме 261134
.
Моим первым инстинктом было попробовать 26[^1][^1][^3][^4]
, но это не соответствует ни одному из вышеперечисленных, потому что в какой-то момент у каждого и каждого из них есть один из отрицательных символов в позиции, для которой я указал отрицание. Следующее самое близкое к решению, которое я могу придумать, - это выражение длиной в милю, которое будет объединяться или складываться примерно так:
26([^1]134|1[^1]34|11[^3]4|113[^4])
Это, однако, еще не соответствует всем. Вместо этого я должен сделать:
26([^1]\d{3}|\d[^1]\d\d|\d\d[^3]\d|\d{3}[^4])
Я думаю, что я ответил на свой вопрос, подумав о нем более тщательно при наборе текста, но мне все еще интересно, есть ли лучшее решение, так как это было действительно громоздко, чтобы выяснить,не говоря уже о типе для такой простой проблемы. Я не смог найти ни вопрос об этом, ни решение, поэтому я надеюсь, что уместно оставить это здесь, чтобы помочь другим с подобной проблемой.