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