Поле COMMENTS
Поле COMMENTS класса Pattern представляет собой флаг
регулярного выражения, который включает режим комментариев.
В этом режиме пробельные символы и комментарии, начинающиеся
с символа #, игнорируются при обработке шаблона.
Это позволяет записывать сложные регулярные выражения
в более читаемом виде, разбивая их на части и добавляя пояснения.
Флаг можно передать вторым параметром в метод compile
класса Pattern или использовать в виде встроенного флага
(?x) внутри самого выражения.
Синтаксис
Pattern.COMMENTS
Пример
Давайте скомпилируем регулярное выражение с флагом
COMMENTS и проверим, что пробелы и комментарии
в шаблоне игнорируются:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main
{
public static void main(String[] args)
{
String regex = "a b c # matches abc";
Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
Matcher matcher = pattern.matcher("abc");
System.out.println(matcher.matches());
}
}
Результат выполнения кода:
true
Пример
Давайте используем встроенный флаг (?x) для включения
режима комментариев без передачи второго параметра:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main
{
public static void main(String[] args)
{
String regex = "(?x) 1 2 3 # matches 123";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("123");
System.out.println(matcher.matches());
}
}
Результат выполнения кода:
true
Пример
Давайте убедимся, что без флага COMMENTS пробелы
в шаблоне являются значимыми и строка не совпадает:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main
{
public static void main(String[] args)
{
String regex = "a b c";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("abc");
System.out.println(matcher.matches());
}
}
Результат выполнения кода:
false
Смотрите также
-
класс
Pattern,
который представляет скомпилированное регулярное выражение -
метод
compile,
который компилирует регулярное выражение с флагами -
поле
CASE_INSENSITIVE,
которое включает режим игнорирования регистра -
поле
MULTILINE,
которое включает многострочный режим