Флаги в строке шаблона в Java
В начале шаблона можно указать встроенные
флаги в круглых скобках. Они действуют
на все выражение. Часто встречаются (?i)
(без учета регистра), (?m) (многострочный
режим для "^" и "$") и (?s)
(точка захватывает перевод строки).
Без флага шаблон [a-z]+ найдет только строчные буквы:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "aaa bbb CCC DDD";
Pattern pattern = Pattern.compile("[a-z]+");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
С флагом (?i) буквы любого регистра
попадут под шаблон:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "aaa AAA bbb BBB";
Pattern pattern = Pattern.compile("(?i)[a-z]+");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Точка без (?s) не совпадает с переводом
строки. С флагом заменяются все символы:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "aaa\nbbb";
Pattern withoutFlagPattern = Pattern.compile(".");
Matcher withoutFlagMatcher = withoutFlagPattern.matcher(txt);
String without = withoutFlagMatcher.replaceAll("!");
Pattern withFlagPattern = Pattern.compile("(?s).");
Matcher withFlagMatcher = withFlagPattern.matcher(txt);
String withFlag = withFlagMatcher.replaceAll("!");
System.out.println(without);
System.out.println(withFlag);
}
}
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "Code CODE code";
}
}
Замените каждое слово "code" на
"*" без учета регистра и выведите
строку в консоль.