【问题标题】:RegEx for replacing a JavaScript pattern用于替换 JavaScript 模式的正则表达式
【发布时间】:2019-05-30 23:08:24
【问题描述】:

我有大量的 html 文件,其表达式如下:

eval('enterData.style.pixelTop=' + y);

我想去掉 eval 表达式,只执行代码,换句话说,把它改成:

enterData.style.pixelTop =  y;

谁能帮我解决这个问题。我试图找到一个解决方案,但我只知道如何消除评估:

Regex: eval\('(.*)'\)
Replace: $1

我正在使用 java 进行正则表达式。

【问题讨论】:

    标签: javascript java regex regex-lookarounds regex-group


    【解决方案1】:

    我对 Javascript 一无所知,但这就是我所看到的。

    您需要转义 ' 字符并使用 :? 将它们放入不匹配的组中

    Regex: eval\(((?:\')(.*)(?:\').*)\)
    Replace: $1
    

    查看regex101 了解正则表达式原型。

    【讨论】:

      【解决方案2】:

      我猜我们可以使用如下表达式分别捕获所需的vars

      .+'(.+?)'\s+?[+\-*]+\s+([a-z]+).+
      

      我们当然可以简化这个表达式,但我不确定我们可能有其他输入。

      Java

      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);

      Demo

      正则表达式

      如果不需要此表达式,可以在 regex101.com 中修改/更改。

      正则表达式电路

      jex.im 可视化正则表达式:

      【讨论】:

        猜你喜欢
        • 2012-02-12
        • 1970-01-01
        • 2014-01-26
        • 2010-11-12
        • 2016-09-23
        • 1970-01-01
        • 2013-05-12
        • 2016-10-20
        • 1970-01-01
        相关资源
        最近更新 更多