В JavaScript вы можете использовать [^]
, что, в отличие от .
, также совпадает с символами новой строки.
В Java самый простой способ сделать .
соответствующим любому символу, включая символы новой строки, будетиспользовать флаг Pattern.DOTALL
(см. руководство ), но если вы не можете использовать флаги с Pattern.compile()
, как вы сказали, вы должны написать их внутри регулярного выражения.
Вот ваше регулярное выражение с добавленным флагом s
(однострочный) (==Pattern.DOTALL
), и поскольку мы здесь, флаг i
(без учета регистра) (==Pattern.CASE_INSENSITIVE
) тоже, так как он, скорее всего, вам понадобитсяа также:
(?si:<pre><code>(.*?)<\/code><\/pre>)
Обратите внимание, что внешняя группа здесь - это группа без захвата (она не будет влиять на количество групп).
Что касается пробелов, они ненужна специальная обработка в регулярном выражении, как это делают переводы строкВ Java самый простой способ удалить начальные и конечные пробелы (включая переводы строк) из захваченного String
, это .trim()
it.