SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\";
if(!s.match(/.*>\s*(\d+).*/)) {s.replace=(/.*>\s*(\d+).*/,'$1');}
else {s.replace=/.*>\s*(\D+).*/,'$1';}")
PROMPT {{!VAR1}}
我正在尝试检查提取的 HTML 代码(匹配第一个或第二个片段)是否与 html 标记之外的数字字符“11111”字符串匹配,如果匹配,请将其替换为所述匹配的第一个捕获组('$1'):
<td style="outline: 1px solid blue;">
11111 <img src="/images/flaggen/de.png" name="" alt="" width="16" height="11" align="absmiddle"> SomeText (MoreText) </td>
如果不匹配,请再次使用第一个捕获组('$1')将其替换为非数字字符串“SomeText”:
<td style="outline: 1px solid blue;">
<img src="/images/flaggen/de.png" name="" alt="" width="16" height="11" align="absmiddle"> SomeText (MoreText) </td>
正则表达式在两种情况下都匹配,并且确实替换了字符串,但仅返回字面意义
$1
,或者我尝试替换的任何内容。
我尝试过的其他正则表达式都不起作用(仅返回文字正则表达式),$& 也不起作用。
如何在此表达式中成功引用捕获组?
编辑1:使用不带引号的$1返回字面$1
,使用双引号“$1”返回iMacro错误MacroSyntaxError:SET命令格式错误,第42行(错误代码:-910)
。转义双引号 \"$1\"
再次按字面返回 $1
。
最佳答案
如果我理解正确,请尝试以下 EVAL
命令:
SET !VAR1 EVAL("var s='{{!EXTRACT}}'; if(s.match(/.*>\s*(\d+).*/)) {s = s.match(/.*>\s*(\d+).*/)[1];} else {s = s.match(/.*>\s*(\D+)\\(/)[1].trim();} s;")
关于javascript - iMacros FF Eval If Else .match .replace 正则表达式捕获组被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955696/