Ho pensato che questo dovrebbe funzionare, ma non lo fa:Come usare i simboli ' Q' e ' E' regex in python?
import re
if re.match("\Qbla\E", "bla"):
print "works!"
Perché non funziona? Posso usare i simboli '\ Q' e '\ E' in python? Come?
Ho pensato che questo dovrebbe funzionare, ma non lo fa:Come usare i simboli ' Q' e ' E' regex in python?
import re
if re.match("\Qbla\E", "bla"):
print "works!"
Perché non funziona? Posso usare i simboli '\ Q' e '\ E' in python? Come?
Il motore regex di Python non supporta quelli; vedere §7.2.1 "Regular Expression Syntax" in the Python documentation per un elenco di cosa è il supporto . Tuttavia, è possibile ottenere lo stesso effetto scrivendo re.match(re.escape("bla"), "bla")
; re.escape
è una funzione che inserisce i backslash prima di tutti i caratteri speciali.
A proposito, si dovrebbe in genere utilizzare stringhe "grezzi", r"..."
invece di solo "..."
, altrimenti backslash avranno elaborato due volte (una volta quando la stringa viene analizzata, e poi di nuovo dal motore regex), il che significa che scrivere cose come \\b
anziché \b
. L'utilizzo di r"..."
impedisce il primo passaggio di elaborazione, quindi è sufficiente scrivere \b
.
Sfortunatamente, Python non supporta le sequenze di escape \Q
e \E
. Devi solo sfuggire a tutto te stesso.
-1: ci sono stringhe crude e re.escape –
Python non supporta \ Q ... \ E. Rif: http://www.regular-expressions.info/refflavors.html
Ma ciò non significa che non supporti l'escape di stringhe di metacaratteri. Rif: http://docs.python.org/library/re.html#re.escape
Grazie. Mi aspetterei di ottenere un'eccezione quando si inserisce un'espressione regolare non supportata. Oh aspetta, questo è pitone ... – wafwaf
Prego. E sì . . Capisco perché la gente ama così tanto Python, ma. . . – ruakh
@ruakh Non è per le regex, credimi. :) – tchrist