Подлый улов - это то, .*что не соответствует символу новой строки ( '\n'). Смотрите этот вопрос для получения дополнительной информации по этой теме.
Капитан Мэн
33
Вы можете использовать это регулярное выражение (любой пробел или любой не пробел) столько раз, сколько возможно, вплоть до 0.
[\s\S]*
Это выражение будет соответствовать как можно меньше, но столько, сколько необходимо для остальной части выражения.
[\s\S]*?
Например, в этом регулярном выражении [\s\S]*?Bбудет соответствовать aBв aBaaaaB. Но в этом регулярном выражении [\s\S]*Bбудет соответствовать aBaaaaBв aBaaaaB.
@linqu, .иногда не будет совпадать \n( перевод строки), в зависимости от параметра многострочного текста, но [\s\S]будет соответствовать любому символу.
Агент-J
19
Ты имеешь ввиду
.*
. любой символ, кроме символа новой строки, в режиме точки ввода он также включает символы новой строки
* любое количество предыдущего выражения, в том числе 0 раз
Я бы использовал .*. .соответствует любому символу, *означает 0 или более вхождений. Вам может понадобиться переключатель DOTALL для регулярного выражения, чтобы захватить новые строки с ..
.*
что не соответствует символу новой строки ('\n'
). Смотрите этот вопрос для получения дополнительной информации по этой теме.Вы можете использовать это регулярное выражение (любой пробел или любой не пробел) столько раз, сколько возможно, вплоть до 0.
Это выражение будет соответствовать как можно меньше, но столько, сколько необходимо для остальной части выражения.
Например, в этом регулярном выражении
[\s\S]*?B
будет соответствоватьaB
вaBaaaaB
. Но в этом регулярном выражении[\s\S]*B
будет соответствоватьaBaaaaB
вaBaaaaB
.источник
.
иногда не будет совпадать\n
( перевод строки), в зависимости от параметра многострочного текста, но[\s\S]
будет соответствовать любому символу.Ты имеешь ввиду
.
любой символ, кроме символа новой строки, в режиме точки ввода он также включает символы новой строки*
любое количество предыдущего выражения, в том числе 0 разисточник
Я бы использовал
.*
..
соответствует любому символу,*
означает 0 или более вхождений. Вам может понадобиться переключатель DOTALL для регулярного выражения, чтобы захватить новые строки с.
.источник
Да, есть один, это звездочка:
*
Это должно быть описано в любом учебнике или документации по регулярным выражениям Java, которые вы ищите.
источник