2017-08-30 33 views
0
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代码(匹配第一或第二片段)是否外部的数字字符“11111”的字符串相匹配HTML标记,如果是这样,与第一捕获组取代它说比赛(“$ 1”):iMacros的FF评估和演示的if else .match .replace正则表达式捕获组被忽略

<td style="outline: 1px solid blue;"> 
 
       11111  <img src="/images/flaggen/de.png" name="" alt="" width="16" height="11" align="absmiddle">  SomeText     (MoreText)    </td>

如果不匹配,与非字符串替换数字字符“SomeText”再次使用第一个捕获组( '$ 1'):

<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: wrong format of SET command, line 42 (Error code: -910)。转义双引号\"$1\"从字面上返回$1

+0

@Toto不带引号的iMacros返回'$ 1没有定义,行:42(错误代码:-1001)' – yuu

+0

@Toto我有“”我得到了'MacroSyntaxError:错误格式的SET命令,第42行(错误代码:-910)',用\ $ 1转义不起作用,也没有/ $ 1/ – yuu

+0

@Toto也试过了,返回是'$ 1'。我将编辑我的问题以包含您的建议和结果。 – yuu

回答

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;") 
+0

谢谢!这正是我需要的。 – yuu

+0

您的解决方案解决了我的问题,但我想知道您是否可以详细说明如何使用.match/.replace引用捕获组。 – yuu