RegEx для замены шаблона JavaScript - PullRequest
0 голосов
/ 31 мая 2019

У меня есть тонны html-файлов с таким выражением:

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

и я хочу исключить выражение eval и просто выполнить код, другими словами изменить его на:

enterData.style.pixelTop =  y;

Кто-нибудь может мне помочь с этим. Я ломаю голову, пытаясь найти решение, но я знаю, как устранить пробел с помощью:

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

Я использую Java для регулярных выражений.

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Я ничего не знаю о Javascript, но это то, что я вижу.

Вам необходимо экранировать символы ' и поместить их в несоответствующие группы, используя :?

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

Извлеките regex101 для создания прототипа регулярных выражений.

0 голосов
/ 31 мая 2019

Я предполагаю, что мы могли бы захватить оба желаемых 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);

Демо

RegEx

Если это выражение нежелательно, его можно изменить или изменить в regex101.com .

Схема RegEx

jex.im визуализирует регулярные выражения:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...