(?REF[A-Z]*)?(\d{3}+)(\d{6}+)(\d{3}+)
< /code>
Я получаю неожиданные совпадения. Пожалуйста, не могли бы вы объяснить, почему происходят следующие совпадения:
- Ввод xyz12345678123456789123 - Сопоставления на 123456781234 - я ожидал, что он не совпадает только на 12345678123
В основном то, чего я хочу достичь, это извлечь 12 -значный идентификатор из строки, которая содержит два идентификатора. Первый идентификатор имеет формат xyz \ d {8} , а во втором идентификаторе есть формат (?> Ref [a-z]*)? (\ D {3}+) (\ d {6}+) (\ d {3}+)
, чтобы избежать совпадения в неправильном. Xyz12345678123456789123 < /code>, я хочу сказать - Получить двенадцать цифр, если цифры не являются частью xyz \ d {8} < /code> идентификатор типа. < /P>
edit < /h2>
< /h2>
< /h2>
< /h2>
. достичь < /p>
XYZ12345678123456789123 match on 123456789123
123456789123 match on 123456789123
XYZ12345678REF123456789123 should match on REF123456789123
12345678912 no match because not 12 digits
REF123456789123 match on REF123456789123
REF12345678912 no match because not 12 digits
XYZ12345678123456789123ABC match on 123456789123
XYZ123456789123 No match
XYZ1234567891234 no match
Подробнее здесь: https://stackoverflow.com/questions/216 ... -lookahead