Я уже понимаю, что .* означает ноль или более любого символа, но
Может ли кто-нибудь объяснить, как .* в следующей работе и с чем она будет соответствовать?
.*([a-m/]*).*
.*([a-m/]+).*
.*?([a-m/]*).*
Ответ 1
точка означает, что все может идти здесь, а звезда означает как минимум 0 раз
поэтому .* принимает любую последовательность символов, включая пустую строку.
Ответ 2
Функция. * в ваших примерах - убедиться, что содержащее выражение может быть окружено чем угодно (или ничего). Точка представляет собой произвольный символ, и звездочка говорит, что символ до может быть повторен произвольным числом раз (или вообще нет).
Ответ 3
Каждый случай отличается:
.*([a-m/]*).*
Первый .*, вероятно, будет соответствовать всей строке, потому что [a-m/] не требуется присутствовать, а первый * является жадным и на первом месте.
.*([a-m/]+).*
Первый .* будет соответствовать всей строке до последнего символа, который соответствует [a-m/], поскольку требуется только один, а первый * является жадным и на первом месте.
.*?([a-m/]*).*
Первый .*? будет соответствовать строке с символом FIRST, который соответствует [a-m/], потому что *? не жадный, тогда [a-m/]+ будет соответствовать всем возможным, потому что + является жадным, а затем последний .* будет соответствовать остальной части строки.
Ответ 4
. * означает "любой символ, любое количество повторений".