У меня есть строка, и я хотел бы узнать первую позицию шаблона. Но его следует искать, только если он не заключен в квадратные скобки.
Пример строки: "This is a (first) test with the first hit
"
Я хочу знать положение второго first
=> 32 . Чтобы соответствовать ему, (first)
необходимо игнорировать, потому что он заключен в скобки.
Я пробовал это:
preg_match(
'/^(.*?)(first)/',
"This is a (first) test with the first hit",
$matches
);
$result = strlen( $matches[2] );
Он работает нормально, но результатом является положение первое совпадение (11).
Итак, мне нужно изменить .*?
.
Я попытался заменить его на .(?:\(.*?\))*?
в надежде, что все символы внутри скобок будут проигнорированы.
А это совсем не совпадает.