我只需要编辑一行正则表达式代码

发布于 2024-12-08 09:46:57 字数 334 浏览 1 评论 0原文

以下代码有效,但如何编辑它以仅检测结束括号后的第一个大括号?

'/\{(([^{}]*|(?R))*)\}/'

示例:

if (1==1) 
{ 
echo "testing {$username}"; 
}

问题在于它检测到所有大括号,甚至包括 $username 变量周围的大括号。所以我认为解决方案是检测第一个大括号之前是否有 ) 。我自己尝试了大约 20 种不同的方法,但无法使其发挥作用。如何对其进行编辑以仅检测 ) { 哦,如果第一个大括号和结束括号之间涉及空格和制表符(如果这很重要),请添加代码。谢谢。

the following code works but how can it be edited to only detect the first curly brace after an end parenthesis?

'/\{(([^{}]*|(?R))*)\}/'

Example:

if (1==1) 
{ 
echo "testing {$username}"; 
}

The problem is that it detects ALL curly brackets, even the one surrounding the $username variable. So I think a solution would be to detect is there is a ) before the first curly bracket. I tried about 20 different things myself but cannot get it to work. How can it be edited to only detect ) { Oh and please add code if there are spaces and tabs involved inbetween the first curly bracket and end parenthesis if that matters. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乜一 2024-12-15 09:46:57

您可以使用:

\)\s*\{

作为模式的一部分来检测像您的示例这样的简单情况。请注意,您不能使用可变长度的正向后查找,因此您不能将其更改为 (?<=)\s*){

我的模式仍然会拾取被注释掉的代码,并且不会' t 检测在 ) 和 { 之间有注释的代码。您不会想使用正则表达式来尝试检测此类情况。

You can use:

\)\s*\{

as part of your pattern to detect simple cases like your example. Note that you can't use a positive lookbehind of variable length though, so you can't alter it to (?<=)\s*){

My pattern will still pick up code that is commented out though, and won't detect code that has a comment between the ) and the {. You wouldn't want to use a regex to try to detect such cases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文