基本上我有一些文字如下:
{hello|hi} this {is really|is actually} great.
我想为preg_replace创建一个正则表达式,它将取代单词“really”,除了棘手的部分是我不希望这个单词在{}
之内我一直在尝试使用正则表达式查看功能,但我只是无法完全获得一种语法,可以检查它是否在{但不是在}之前。
答案 0 :(得分:2)
试试这个
(?<!{)([^{}\r\n]*?)really(?![^{\r\n]*})
并替换为
$1Replacement
约束:
一个问题是PHP只允许固定长度的后备,因此你必须用$1 + Replacement
替换
(?<!{)
负面看法,左边没有{
([^{}\r\n]*?)
否定字符类,不允许{}
和换行符(如果需要可以尝试)懒惰匹配0次或更多次,该组的内容存储在{{1 }}
$1
否定前瞻断言不允许(?![^{\r\n]*})
跟随}
或换行符之间的错误。