Припустимо, я отримав цей рядок:
|125148 Schalter f GLE GÜ 90/80Z nei PL 80 16AJ
І хочете узгодити дві наступні частини:
- 125148
- Schalter f GLE GÜ 90 / 80Z nei PL 80
16AJ може використовуватися як "точка розриву", тому будь-що, починаючи з першої літери після цифри до "точки перерви", повинна відповідати групі.
Я отримав це якось, працюючи з цим регулярним виразом ^|([0-9])+(.)+(?=s+16AJ)
але моя перша група містить 8 символів, а друга моя група не містить нічого.
Подивіться це демонстрація
Що я тут пропускаю? Чому моя друга група порожня?
Відповіді:
3 для відповіді № 1^|([0-9])+(.+)(?=s+16AJ)
^^
Вам потрібно взяти кількісний показник всередині групи захоплення.
1 для відповіді № 2
Ви можете використовувати цей регулярний вираз:
^|([0-9]+)s+(.+?16AJ)
На Java:
^\|([0-9]+)s+(.+?16AJ)
Це дасть вам 125148
у першій групі та Schalter f GLE GÜ 90/80Z nei PL 80 16AJ
у 2-й групі.
1 для відповіді № 3
Друга група не пуста. Ви захоплюєте 8
у першій групі та 0
по-друге, саме цього я б і очікував від цієї виразки. Потрібно поставити квантори всередині групи захоплення. Як ви це робите, ви захоплюєте по одному символу, кожен раз перезаписуючи раніше захоплений символ.
Я думаю, що це ви намагаєтеся:
^|([0-9]+)s+(.+?)s+16AJ