2017-08-30 1 views
0
ignoriert
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; 
if(!s.match(/.*>\s*(\d+).*/)) {s.replace=(/.*>\s*(\d+).*/,'$1');} 
else {s.replace=/.*>\s*(\D+).*/,'$1';}") 
PROMPT {{!VAR1}} 

Ich versuche, ob das extrahierte HTML-Code zu überprüfen, der eine Reihe von numerischen Zeichen „11111“ außerhalb der (entweder den ersten oder zweiten Schnipsel passend) hTML-Tags und wenn ja, ersetzen sie es mit der ersten Erfassungsgruppe des Spiels (‚$ 1‘):iMacros FF Eval Wenn Else .match .replace regex Erfassungsgruppe

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

wenn es nicht übereinstimmt, ersetzen sie es mit der Zeichenfolge von nicht numerische Zeichen "SomeText" erneut mit die erste Erfassungsgruppe ('$ 1'):

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

Die Regex passt in beiden Fällen und macht die Zeichenfolge ersetzen, sondern liefert nur buchstäblich

$1

, oder was auch immer ich versuche, ersetzen mit.

Keine andere Regex, die ich versucht habe, funktioniert (gibt nur die literale Regex-Ausdruck), weder $ &.

Wie kann ich eine einfangende Gruppe in diesem Ausdruck erfolgreich referenzieren?

Edit 1: Using $ 1 ohne Anführungszeichen gibt Literaly $1, mit doppelten Anführungszeichen "$ 1" gibt iMacro Fehler MacroSyntaxError: wrong format of SET command, line 42 (Error code: -910) zurück. Die doppelten Anführungszeichen entgehen \"$1\" kehrt wieder wörtlich $1.

+0

@Toto ohne Anführungszeichen iMacros gibt '$ 1 ist nicht definiert, Zeile: 42 (Fehlercode: -1001)' – yuu

+0

@Toto Ich habe versuchte das vorher, mit "" bekomme ich 'MacroSyntaxError: falsches Format des SET-Befehls, Zeile 42 (Fehlercode: -910)', nicht mit \ $ 1 zu entkommen, funktioniert auch nicht/$ 1/ – yuu

+0

@Toto Versuchte das auch Rückkehr ist "$ 1". Ich werde meine Frage bearbeiten, um Ihre Vorschläge und deren Ergebnisse einzubeziehen. – yuu

Antwort

1

Wenn ich Sie recht verstanden, versuchen Sie die folgenden EVAL Befehl:

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

Danke! Genau das habe ich gebraucht. – yuu

+0

Ihre Lösung hat mein Problem gelöst, aber ich frage mich, ob Sie herausfinden könnten, wie Sie die Erfassungsgruppe mithilfe von .match/.replace referenzieren. – yuu