2016-08-08 15 views
3

Ich benutze die regex wie dieWie kann der Regexp eine neue Zeile in Python ignorieren?

return(\s+([^"\n;]+))?; 

um die return-Anweisung in obj-c übereinstimmen, aber wenn ich es durch Python wie folgt verwenden:

re.sub(r'return(\s+([^"\n;]+))?;',r'{\g<0>}',str(content)) 

ich, dass es passen finden wie Diese Aussage

//please {return 
[self funcA];} 

und den Code error.Wow kann ich damit umgehen?

Antwort

2

Ich denke, das Problem ist, dass Ihre Regex hat \s, dass alle Leerzeichen entspricht.

Sie möchten vielleicht nur wörtlichen Leerzeichen oder Tabs mit [ \t] entsprechen:

r'return([ \t]+([^"\n;]+))?;' 

(demo) oder - besser:

r'return[ \t]+[^"\n;]*;' 

Siehe the regex demo

+0

danke sehr viel, und ich habe anthor Frage, wie kann ich diese Situation entsprechen ======= >>> zurück @ "Hallo Welt"; und "diese Frage zurückgeben"; Wenn ich die Regex wie folgt ändere r'return [\ t] + [^ \ n;] *; ' Es wird << "diese Frage zurückgeben"; >> Fehler wie dieser "{diese Frage zurückgeben"; } – CurryChen

+0

Sorry, können Sie einen Demo-Link wie https://regex101.com/r/mM6mK2/3 teilen? –

+0

https://regex101.com/r/mM6mK2/4 und https://regex101.com/r/mM6mK2/5 danke – CurryChen