2013-09-06 3 views
-2

Regex [abcd] может принимать любой символ из a, b, c и d.Что эквивалентно квадратным скобкам для нескольких символов?

Что делать, если я хочу взять одну строку из abc, def и ijk.

Так что примерно ["abcd" "def" "efg"] (но это явно не работает).

Как бы это сделать на Java?

+5

Есть ли разница между вашим вопросом и описанием? –

+2

Ответ: «с улыбкой на лице». Помните, людям нравится работать с улыбающимися людьми. Или я неправильно понял вопрос? – ppeterka

+1

Используйте вертикальную полосу между элементами '|' – dcaswell

ответ

11

ваше регулярное выражение может выглядеть следующим образом:

(abcd|def|efg) 
+1

Фактически, '(?: Abcd | def | efg)' будет «точным» эквивалентом, поскольку использование '(...)' вводит служебные данные захвата, может включать в себя захват в результате (в зависимости от метода) и повлияет на нумерацию других групп, используемых в шаблоне. –

4

[] только для отдельных символов.

Вы можете использовать | для нескольких символов (X|Y означает "Either X or Y"):

abcd|def|efg 

В случае, если есть что-нибудь еще в регулярном выражении, вы хотите, чтобы окружить его с кронштейнами:

other(abcd|def|efg)stuff 

Вышеупомянутые соответствия:

otherabcdstuff 
otherdefstuff 
otherefgstuff 

Где-как:

otherabcd|def|efgstuff 

, очевидно, совпадают эти строки:

otherabcd 
def 
efgstuff 
Смежные вопросы