2017-01-21 4 views
0

Ich benutzte ersetzen Zeichenkette, die Regexp Funktion im Roboter-Rahmen verwendet, um "\ |" zu ersetzen zu "### PIPE ###", aber es funktioniert nicht.Regulärer Ausdruck Roboter-Rahmen

*** Test Cases *** 
TestCast1 
${result} Replace String Using Regexp Bell|fieldName|11|LastName\|dd \\\| \#\#\#PIPE\#\#\# 

Ergebnis

Bell###PIPIE###fieldName###PIPIE###11###PIPIE###LastName###PIPE###dd 

Mein Erwartetes Ergebnis

Bell|fieldName|11|LastName###PIPE###dd 

Können Sie mir bitte helfen?

+0

können Sie eine ordnungsgemäße Eingabe-String? – RomanPerekhrest

+0

Eingabe String = Bell | fieldName | 11 | Nachname \ | dd Ist das nicht korrekt? –

+0

Was ist Ihre Regexp-Funktion? – snow

Antwort

0

Die Lösung re.sub() Funktion (im Fall, wenn die letzten "verrohrt" Teil der Eingabezeichenfolge könnte dynamisch sein) mit:

input_str = 'Bell|fieldName|11|LastName\|dd' 
result = re.sub(r'\\\|(\w+)$', r'###PIPE###\1', input_str) 

print(result) 

Der Ausgang: Die

Bell|fieldName|11|LastName###PIPE###dd 
0

Lassen Sie versuchen, eine grobe Idee, es ist hässlich, aber es funktioniert .. :)

${result} Replace String Using Regexp Bell|fieldName|11|LastName\|dd \\|dd \#\#\#PIPE\#\#\#dd 
Log To Console \n\n${result} 
0

I h ein ähnliches Problem bei der Arbeit an einer nestbaren For-Schleife für Robot Framework. Hier ist meine Theorie, was passiert, sans eigentlich Keyword-Code mit:

Ereignis 1: Sie senden die Eingänge Bell|fieldName|11|LastName\|dd, \\\| und \#\#\#PIPE\#\#\#-Replace String Using Regexp. Das hast du eingegeben.

Ereignis 2: Replace String Using Regexp empfängt Bell|fieldName|11|LastName|dd, \| und ###PIPE###. Dies geschieht automatisch.

Ereignis 3: Ich nehme an, dass ein Code in Ihrem Schlüsselwort \| in ein anderes Schlüsselwort einfügt, das das eigentliche Ersetzen durchführt. Wenn das passiert, wird aus \||. Wenn dieses Schlüsselwort dann den Text ersetzt, findet es vier Instanzen von | und ersetzt sie alle mit ###PIPE###.

FIX

Ereignis 1: Senden der Eingänge Bell|fieldName|11|LastName\\|dd, \\\\| und \#\#\#PIPE\#\#\# zu Replace String Using Regexp.

Ereignis 2: Replace String Using Regexp empfängt Bell|fieldName|11|LastName\|dd, \\| und ###PIPE###.

Ereignis 3: \\| wird zu \|. Wenn das andere Schlüsselwort dann den Text ersetzt, findet es eine Instanz von \| und ersetzt sie durch ###PIPE###.

Nach dem, was ich in Ihrem Code sehen können, ist | nicht wörtlich brauchen, so dass die einzigen Dinge, die die \ s und # s tun sind. Also, was Sie gesendet haben, ist im Grunde das gleiche wie Bell|fieldName|11|LastName|dd, |, und \#\#\#PIPE\#\#\#