繁体   English   中英

匹配条件RegEx

[英]Match a condition RegEx

我需要能够删除字符串中的条件,这里是:

(("${Operation}" == "Fixed") && ("-" == "-"))

我希望能够将"${Operation}" == "Fixed"替换为""或其中包含$ {}的任何东西。 换句话说,如果条件左侧有$ {},我想完全摆脱这个条件。

这将匹配它

\([^(]*\${.*?}[^)]*\)

在此输入图像描述

一般来说 ,正则表达式不是正确的方法。 有许多案例都是有效的JavaScript语法,但这些案例并不适合正则表达式。 但是,这是一种方法:

var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');

那只处理双引号。 如果需要处理两种类型的引号,表达式将更复杂。 如果您需要处理两种类型的引号并且您的字符串可能包含引号,那么正则表达式实际上不起作用。

如果你能想出一个不同的方法来解决这个问题,那么你应该这样做。 例如 - 字符串来自哪里? 你能以不同的格式获得数据吗?

此外,听起来您正在设置此字符串以调用eval 如果它包含任何类型的用户输入,这是一个坏主意。

有了这个正则表达式/ /^\\(?[^)&]*?\\${.*\\)/我成功匹配了两个第一行而不是另外两个。 这是你想要的?

((“$ {Operation}”==“Fixed”)&&(“ - ”==“ - ”))

(“$ {Operation}”==“Fixed”))

((“$ Operation”==“Fixed”)&&(“ - ”==“ - ”))

((“ - ”==“ - ”)&&(“$ {Operation}”==“Fixed”))

有意思的是,我想出了/ /\\(("?\\${.*}"?[^)]*)\\)/g

'(("${Operation}" == "Fixed") && ("-" == "-"))'.replace(/\(("?\${.*}"?[^)]*)\)/g, '("")')

这可能有太多* ,但互联网编码问题似乎总是有点大开。

注意:这就像在特殊的RegExp角色中进行测试一样,很有趣!

保持我写的正则表达式下沉船唯一的事情是[^)]*任何事情都不是结束)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM