{*或*}的正则表达式(用于Laravel 5.7升级的PhpStorm)

{*或*}的正则表达式(用于Laravel 5.7升级的PhpStorm),php,regex,laravel,phpstorm,Php,Regex,Laravel,Phpstorm,我正在升级到Laravel5.7,作为其中的一部分,我需要将all或in-Blade更新到???,无论它们被花括号{{}或{!!}包围。我试图在PhpStorm中使用Regex来查找所有实例,即{*或*},其中*可以是任意数量的任意字符 我该怎么做 我自己也尝试过,但我对Regex还不熟悉,我的尝试可能非常糟糕: /{[^!][or]}/ 我不会使用正则表达式来尝试实现这一点,主要是因为本文中概述的原因,这篇文章对计算机理论进行了更深入的探讨。基本上,正则表达式无法记住上下文开头标记,例如{{

我正在升级到Laravel5.7,作为其中的一部分,我需要将all或in-Blade更新到???,无论它们被花括号{{}或{!!}包围。我试图在PhpStorm中使用Regex来查找所有实例,即{*或*},其中*可以是任意数量的任意字符

我该怎么做

我自己也尝试过,但我对Regex还不熟悉,我的尝试可能非常糟糕:

/{[^!][or]}/

我不会使用正则表达式来尝试实现这一点,主要是因为本文中概述的原因,这篇文章对计算机理论进行了更深入的探讨。基本上,正则表达式无法记住上下文开头标记,例如{{或{!!以将它们与结束标记配对;与您试图执行的操作相匹配的正则表达式查找{{something here}或{!!something here!!}也将匹配此{{something error!!}。也就是说,您可以编写自己的转换器,它将能够维护该上下文,或者通过手动操作来完成繁重的工作。您还可以进行一些研究,以确定是否有其他人已经完成了此操作。但是,正则表达式可能是用于此项工作的错误工具。

我发现以下几点非常接近此用例的解决方案可以根据需要稍加调整:

\{(.*)\bor\b(.*)\}
e、 g.要仅匹配双精度{{,可以使用:

\{\{(.*)\bor\b(.*)\}\}
在PHPStorm中,您可能需要单击显示“除注释”的过滤器复选框


这并不能很好地工作,所以如果有人有更好的解决方案,请发布!

试试?:\G?!\a{[^{}]*?\K\bor\b?=[^{}]*}为什么有或在方括号内?匹配o或r的,它与字符串或不匹配。这似乎是正则表达式新手经常犯的错误,不知道为什么。@WiktorStribiżew感谢您的建议。不幸的是,在PHPStorm中似乎不起作用-搜索它不会产生任何结果results@WiktorStribiżew我会改变表达a对?:?!^{[^{}]*?\Kor?=[^{}]*}有一点,现在它匹配{{}或}和任何或在结束括号之后。@user6122500您可能对搜索设置有问题,请查看并匹配任意数量或出现在大括号之间的项。