Вы можете использовать это регулярное выражение, чтобы соответствовать первому вхождению "my", которое не содержится только в теге <a> </a>
.
^.*?\Kmy(?![^>]*\/\s*a\s*>)
и заменить его на "this", как вы хотите в своем посте.
Объяснение:
^
-> Начало ввода .*?
-> Совпадение любых символов в не- жадный способ (чтобы захватить первое вхождение моего) \K
-> Сбросить все совпадения, чтобы совпадало только «мое», которое необходимо заменить на «this» (?![^>]*\/\s*a\s*>)
-> Отрицательный взгляд вперед, чтобы убедиться, что «мой» текст не содержится в теге <a> </a>
.
Демо
Вот пример кода PHPдля того же,
$str = 'Here is < a > my < / a > String. I Would like to replace my string. In this string only 1 my will be replace which is first and doesn\'t has anchor link.';
$res = preg_replace('/^.*?\Kmy(?![^>]*\/\s*a\s*>)/','this',$str);
echo $res;
Это дает следующий результат, как вы ожидаете,
Here is < a > my < / a > String. I Would like to replace this string. In this string only 1 my will be replace which is first and doesn't has anchor link.