我有这个在我们的项目中发生了数百次(两边都有一个空格):
Eval("RandomDataName")
我希望将其替换为(两边都有一个空格):
H(Eval("RandomDataName"))
现在我有,
Eval\({.*}\)
并替换为:
H(Eval(\1))
这可行,但不适用于有多个Eval的行,因为它在同一行上选择所有这些。我怎样才能解决这个问题?我试过用。*?这不起作用。
答案 0 :(得分:2)
你需要更明确,当前的正则表达式太贪心了。
例如,假设你有这条话。
Eval("Test") Eval("Another") Eval("Yet one more")
你的正则表达式将匹配Eval(
并继续前一个)
,捕捉其中的所有内容。要让它发挥作用的最简单方法可能是拥有您期望的“白名单”字符。类似的东西:
Eval\([a-zA-Z0-9\" ]*\)
这将匹配Eval(
,然后匹配引号,字母数字字符和空格零次或多次,最后匹配每个)
语句的结束Eval()
。
我建议将一些示例Eval()
语句放入RegExr并测试一些正则表达式,看看哪些对您的数据集有效。