Regex для сопоставления строки, если она соответствует только одной группе в Java - PullRequest
0 голосов
/ 21 апреля 2019

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

допустим, у меня есть две группы:

Группа 1: [a-zA-Z]

Группа 2: [0-9]

Так есть ли применимое регулярное выражение, чтобы соответствовать только следующей строке: abc, или только этот: 123.

Но это не будет ничего соответствовать , когда есть строка, представляющая комбинацию обеих групп, например: 123abc2b?

П.С .: Я использую Java.

Ответы [ 2 ]

8 голосов
/ 21 апреля 2019

Чередование является ключом к вашей проблеме.Шаблон использования ^(?:\d*|[a-zA-Z]*)$

Объяснение:

^ - начало строки

(?:...) - группа без захвата

\d*- сопоставить ноль или более цифр

| - чередование

[a-zA-Z]* - сопоставить ноль или более букв (строчные или прописные)

$ - сопоставить конецСтрока

Демо

3 голосов
/ 21 апреля 2019

Исходя из вашего описания, я думаю, что вам просто нужно |, что означает "или" в регулярном выражении.Для соответствия [a-zA-Z] или [0-9], но не обоим.

например

^(?:[a-zA-Z]+|[0-9]+)$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...