2015-07-30 3 views
2

, работающими на регулярных выражениях здесь https://regex101.com/r/wI2cG1/1регулярного выражения + захват групп с различными условиями

это данные:

K'1234567 
K'123456789 
K'123456 

Я заинтересован в цифрах после K»
Я ищу сделать это с помощью regex, но не уверен, что это можно сделать. Я хочу:
, если число имеет 6 цифр, возвращает первые 2 цифры, например. 12
, если номер имеет 7 цифр, возвращает первые 3 цифры, например. 123
, если число имеет 9 цифр, возвращают первые 4 цифры, например. 1234

также , если число содержит 10 или 11 цифр, возвращают первые 3 цифры, например. 123

и я хочу вернуть их к различным именам групп захвата или, по возможности, одному и тому же имени группы захвата.

ответ

3

Можно сохранить результаты в одной группе, используя branch reset особенность:

K'(?|(\d{2,3})\d{4}|(\d{4})\d{5}|(\d{3})\d{7,8})\b 

Regex Demo

+0

ТКС есть я получил это право, если я хочу, чтобы вернуть его к тому же с именем 'name1' захватили группа? [здесь] (https://regex101.com/r/wI2cG1/5) – HattrickNZ

+0

Да. Если вы опустите указанную группу в других альтернативах, группы по-прежнему будут совместно использовать имена с другими альтернативами. – hwnd

Смежные вопросы