Что, если мне нужно отделить эти строки от других частей регулярного выражения, которые также являются строками? например, eee (ff | gg) eee Нужно ли использовать скобки?
Эрик Коннер
Да ладно. Ваше обновление исправляет это. Последний пример - это то, что я искал. Благодарность!
Ответы:
Вы можете просто использовать пайп отдельно:
"string1|string2"
например:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|string2", "blah"));
Выход:
Основная причина использовать круглые скобки - ограничить диапазон альтернатив:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string(1|2)", "blah"));
имеет такой же вывод. но если вы просто сделаете это:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|2", "blah"));
Вы получаете:
потому что вы сказали "строка1" или "2".
Если вы не хотите фиксировать эту часть выражения, используйте
?:
:String s = "string1, string2, string3"; System.out.println(s.replaceAll("string(?:1|2)", "blah"));
источник