Прямо сейчас, образец ([.\n]{1,}) abc
довольно назад. Во-первых, {1,}
идентичен +
, поэтому этот шаблон действительно ([.\n]+) abc
. Во-вторых, как указано в руководствах по регулярным выражениям Oracle:
Примечание. В определенных ситуациях перечисленные выше специальные символы не будут рассматриваться как метасимволы.
В случае [.]
, .
больше не является метасимволом регулярного выражения. В этом можно убедиться, проверив шаблон по строке "test . abc"
, которая сгруппирует "."
.
Чтобы включить флаг DOTALL
, просто добавьте параметр в регулярное выражение или вы можете добавить параметр в качестве параметра:
Pattern pattern = Pattern.compile("(?s)(.+) abc")
Pattern pattern = Pattern.compile("(.+) abc", Pattern.DOTALL)
Примечание ссылка
Полный список флагов и другая полезная информация