ASP.NET RegEx:如何替换Eval的所有出现(?????)

时间:2011-04-26 16:56:01

标签: asp.net regex visual-studio

我有这个在我们的项目中发生了数百次(两边都有一个空格):

Eval("RandomDataName")

我希望将其替换为(两边都有一个空格):

H(Eval("RandomDataName"))

现在我有,

Eval\({.*}\) 

并替换为:

H(Eval(\1)) 

这可行,但不适用于有多个Eval的行,因为它在同一行上选择所有这些。我怎样才能解决这个问题?我试过用。*?这不起作用。

1 个答案:

答案 0 :(得分:2)

你需要更明确,当前的正则表达式太贪心了。

例如,假设你有这条话。

Eval("Test") Eval("Another") Eval("Yet one more")

你的正则表达式将匹配Eval(并继续前一个),捕捉其中的所有内容。要让它发挥作用的最简单方法可能是拥有您期望的“白名单”字符。类似的东西:

Eval\([a-zA-Z0-9\" ]*\)

这将匹配Eval(,然后匹配引号,字母数字字符和空格零次或多次,最后匹配每个)语句的结束Eval()

我建议将一些示例Eval()语句放入RegExr并测试一些正则表达式,看看哪些对您的数据集有效。