#java #regex #replace #case #case-sensitive
#java #регулярное выражение #заменить #случай #с учетом регистра
Вопрос:
У меня есть фрагмент регулярного выражения "([A-Z]|_)*"
для поиска значений атрибутов в верхнем регистре в документе xml. Я хотел бы перевести все результаты в нижний регистр. Я знаю, что могу ссылаться на найденную группу с $
знаком, но как я могу передать значение $
переменной в toLowerCase()
функцию. Мне все равно, включает ли решение Java или простой текстовый редактор справится с задачей, потому что это одноразовая работа.
Спасибо.
Ответ №1:
Прежде всего, для этой конкретной задачи вам, вероятно, следует вместо этого использовать анализатор XML. Сказав это, с помощью регулярных выражений вы можете использовать Matcher
для хранения захваченных групп:
Pattern p = Pattern.compile("([A-Z]|_) ");
String s = "test="UPPERCASE" other="lowercase" map="UPPER"";
Matcher m = p.matcher(s);
while (m.find()) {
String group = m.group(0);
System.out.println(group.toLowerCase()); // will print "uppercase" and "upper"
}
Комментарии:
1. вы также можете использовать m.start() и m.end() для доступа к несогласованным частям. Т.Е. при первом совпадении вам нужно скопировать из 0 в индекс m.запустите() как есть, затем добавьте преобразованный нижний регистр и т.д. и т.п.