Работает только 4-й контрольный пример.
первый m~href="(.*?)"~s
Это будет соответствовать первому href в вашей строке и захватывать то, что находится между кавычками, так: /hoh/hoh/hoh/hoh/hoh
Второй: m~href="(.*?)".*>lol~s
Это будет соответствовать первому href в вашей строке и захватывать то, что находится между кавычками, а затем совпадать с любым любым числом любого символа, пока не найдет >lol
так: /hoh/hoh/hoh/hoh/hoh
Попробуйте захватить .*
с помощью m~href="(.*?)"(.*)>lol~s
$1 contains :
/hoh/hoh/hoh/hoh/hoh
$2 contains :
class="hoh">hoh</a>
<a href="/foo/foo/foo/foo/foo" class="foo">foo </a>
<a href="/bar/bar/bar/bar/bar" class="bar">bar</a>
<a href="/lol/lol/lol/lol/lol" class="lol"
третий: m~href="(.*?)".*?>lol~s
Тот же результат, что и в предыдущем тестовом примере.
Четвертый: m~.*href="(.*?)".*?>lol~s
Это будет соответствовать любому числу любого символа, затем href="
, затем захватить любое число любого символа, не жадного до кавычки, затем соответствовать любому любому числу любого символа, пока не найдет >lol
так: /lol/lol/lol/lol/lol
Попробуйте захватить все .*
с помощью m~(.*)href="(.*?)"(.*?)>lol~s
$1 contains :
<a href="/hoh/hoh/hoh/hoh/hoh" class="hoh">hoh</a>
<a href="/foo/foo/foo/foo/foo" class="foo">foo </a>
<a href="/bar/bar/bar/bar/bar" class="bar">bar</a>
<a
$2 contains :
/lol/lol/lol/lol/lol
$3 contains :
class="lol"
Посмотрите на этот сайт , он объясняет, что делают ваши регулярные выражения.