iMacros FF Eval If Else .match .replace 正则表达式捕获组被忽略
iMacros FF Eval If Else .match .replace regex capturing group is ignored
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\";
if(!s.match(/.*>\s*(\d+).*/)) {s.replace=(/.*>\s*(\d+).*/,'');}
else {s.replace=/.*>\s*(\D+).*/,'';}")
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>
正则表达式在两种情况下都匹配并且确实替换了字符串但仅 returns 按字面
,或者我尝试替换的任何内容。
我试过的其他正则表达式都不起作用(returns 只是文字正则表达式),$& 也没有。
如何才能在此表达式中成功引用捕获组?
编辑 1:直接使用不带引号的 $1 returns </code>,使用双引号“$1”returns iMacro 错误 <code>MacroSyntaxError: wrong format of SET command, line 42 (Error code: -910)
。再次转义双引号 \"\"
returns
.
如果我没听错,请尝试以下 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;")
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\";
if(!s.match(/.*>\s*(\d+).*/)) {s.replace=(/.*>\s*(\d+).*/,'');}
else {s.replace=/.*>\s*(\D+).*/,'';}")
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>
正则表达式在两种情况下都匹配并且确实替换了字符串但仅 returns 按字面
,或者我尝试替换的任何内容。
我试过的其他正则表达式都不起作用(returns 只是文字正则表达式),$& 也没有。
如何才能在此表达式中成功引用捕获组?
编辑 1:直接使用不带引号的 $1 returns </code>,使用双引号“$1”returns iMacro 错误 <code>MacroSyntaxError: wrong format of SET command, line 42 (Error code: -910)
。再次转义双引号 \"\"
returns .
如果我没听错,请尝试以下 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;")