我有大量的HTML文件,其表达方式如下:
eval('enterData.style.pixelTop=' + y);
我想消除eval表达式,只执行代码,换句话说,将其更改为:
enterData.style.pixelTop = y;
有人可以帮我吗?我在努力寻求解决方案时伤脑筋,但我只知道如何使用以下方法消除评估:
Regex: eval\('(.*)'\)
Replace: $1
我将Java用于正则表达式。
答案 0 :(得分:0)
我猜测我们可以使用诸如
这样的表达式分别捕获两个所需的vars
.+'(.+?)'\s+?[+\-*]+\s+([a-z]+).+
我们当然可以简化此表达式,但是我不确定我们可能会有其他输入。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = ".+'(.+?)'\\s+?[+\\-*]+\\s+([a-z]+).+";
final String string = "eval('enterData.style.pixelTop=' + y);\n"
+ "eval('enterData.style.pixelTop=' + x);";
final String subst = "$1$2;";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println(result);
const regex = /.+'(.+?)'\s+?[+\-*]+\s+([a-z]+).+/gm;
const str = `eval('enterData.style.pixelTop=' + y);
eval('enterData.style.pixelTop=' + x);`;
const subst = `$1$2;`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log(result);
如果不需要此表达式,可以在regex101.com中对其进行修改/更改。
jex.im可视化正则表达式:
答案 1 :(得分:0)
我对Java语言一无所知,但这就是我所看到的。
您需要转义'
个字符,并使用:?
将它们放在不匹配的组中
Regex: eval\(((?:\')(.*)(?:\').*)\)
Replace: $1
签出regex101制作正则表达式原型。