问题标签 [balancing-groups]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
53 浏览

regex - .NET Regex Balancing Groups and syntax matching

I have some code containg null == myvar and want to change it myvar == null. Variants of code

I have solved the 3 first cases using this regex

And replace with

Though for the last case it will replace with

The problem is it looks for a space or a parenthesis, but in the case of parenthesis it needs to balance them with opening parenthesis

I need to use Balancing Groups somehow but I do not understand how :D

0 投票
1 回答
39 浏览

.net - 避免正则表达式平衡组移出括号

我正在使用以下正则表达式来匹配引用特定 UDF 的任何数据脚本脚本的内容:

它匹配以下任何实例:

使用平衡组,我还尝试支持以下案例:

但是,当输入如下时,我遇到了麻烦:

在最后一种情况下,我的正则表达式也匹配该ThirdMethod('input')部分。

有什么办法可以改变我的正则表达式,所以只要“括号计数”为0,它就会停止匹配?

0 投票
1 回答
63 浏览

.net - .Net Regex 中的平衡组未正确嵌套

我正试图解决我在 .Net 平衡组正则表达式中发现的一个错误。

我正在尝试匹配!{}作为开/关组合。

当前正则表达式 ->!{[^!{}]*(((?<Open>!{)[^!{}]*)+((?<Close-Open>})[^!{}]*)+)*(?(Open)(?!))}

这匹配!{some random stuff here}成功。它也匹配!{some other Stuff !{} with nesting}

但是,它根本不匹配!{some stuff with {} just curly braces}。字符串中的“{}”似乎导致了一些问题,因为它似乎认为该组不再“平衡”

我正在http://regexstorm.net/tester上测试所有这些,这是 .Net 特定正则表达式测试的好地方。

公平地说,我不是正则表达式专家,并且厚颜无耻地从该站点http://www.regular-expressions.info/balancing.html复制/操纵了正则表达式

我不需要它能够匹配嵌套,因为我将使用 c# 递归地遍历匹配,但我只需要能够在上面失败的示例上获得正匹配。

更新

这是该模式的初始目标。就像 Razor 页面匹配 @{ some C# code here } 作为代码块一样,我使用了 !{some code here} 的模式来划分 html 页面内的代码段。我为客户编写了一个网站,他们使用这些“替换器”在其 html 页面中执行自定义逻辑。例如:

当页面呈现出来时,我使用 Regex 来识别那些“替换器”,然后使用 Springframework.Net 针对已知上下文执行该代码。

自 2009 年以来,这一切都运作良好(10 多年前是的!)但现在他们开始使用更多的 Json 类型数据,这就是我发现我的正则表达式的这个错误/问题的地方。

所以想象一下这个例子

正如您在上面的示例中看到的那样,在我试图匹配的替换器中有一个带有花括号“{}”的 Json!{} 这就是正则表达式失败的地方。

PS'!不是可选的,它必须用 '!{' 打开并用 '}' 关闭

提前致谢

0 投票
0 回答
96 浏览

regex - 平衡和不平衡字符串的正则表达式

我需要匹配可以在括号之间的字符串{}。字符串还可以包含更多类型的括号。它也可以是平衡的和不平衡的。

例如:{Title} {Size{()} {Color({[]})} {Test{} {Color{}}

所以,我实际上需要删除{....}

在这种情况下,匹配的字符串应该是:Title, Size{(), Color({[]}), Test{, Color{}

我正在使用这个正则表达式

我当时正在使用:

它仅在括号未关闭时才有效,因此它适用于:{Size{()}- 它获取 Size{() 字符串。它不适用于{Color{}},因此括号是平衡的。在这种情况下,我应该得到Color{}

任何帮助表示赞赏。