В основном у меня есть текст, который выглядит следующим образом:
{hello|hi} this {is really|is actually} great.
Я хочу создать регулярное выражение для preg_replace, которое заменит слово «действительно», за исключением сложной части, что я не хочу, чтобы слово находилось внутри {}
Я пытаюсь использовать функцию поиска регулярных выражений, но я просто не могу получить синтаксис, который проверяет, находится ли он в {, но не раньше}.
Попробуй это
(?<!{)([^{}\r\n]*?)really(?![^{\r\n]*})
и заменить на
$1Replacement
См. Здесь, в Regexr
Ограничения:
Одна из проблем заключается в том, что PHP допускает только фиксированную длину lookbehind, поэтому вам нужно заменить на $1 + Replacement
(?<!{)
отрицательный взгляд за утверждением, нет {
слева
([^{}\r\n]*?)
отрицательный класс символов, не допускает {}
и символы разрыва строки (вы можете попробовать без необходимости), ленивый, сопоставленный 0 или более раз, содержимое этой группы хранится в $1
(?![^{\r\n]*})
отрицательный взгляд вперед утверждение не позволяет a }
следовать с {
или разрывом символа линии между ними.