Regex - дополнительная группа с заменой - PullRequest
0 голосов
/ 22 января 2020

Мне нужно записать до четырех цифр, как указано ниже, в именованной группе:

    123       -> 123
    2357      -> 2357
    123 (11X) -> 11
    235 (7Y)  -> 7

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

Моя первоначальная попытка выглядит следующим образом:

(?<ABC>\d{0,4})?|\((?<DEF>\d{0,4})(?<GHI>[A-Za-z])\)

Regular expression visualization

Демо Debuggex , кажется, захватывает нужные мне группы, но как автоматически выбрать правильную группу в контексте замены - AB C или DEF в зависимости от ввода?

Нужен ли мне «сброс ветви», чтобы я мог дать группам «AB C» и «DEF» одно и то же имя и, если да, то как мне его реализовать?

Посоветуйте, пожалуйста?

1 Ответ

0 голосов
/ 23 января 2020

После долгих проб и ошибок работает следующий шаблон. NET [ Solution ]:

    (?<ABC>\d{0,4}) ?\((?<ABC>\d{0,4})(?<GHI>[A-Za-z])?\)        
...