¿Hay alguna manera de obtener una sola expresión regular para satisfacer esta condición?¿cómo incluyo un booleano Y dentro de una expresión regular?
Busco a una "palabra" que tiene tres cartas del conjunto mbipi, cualquier orden, sino que debe contener un I.
decir.
re.match ("[MBDPI] {3}", foo) y "I" en foo
Así que esto es el resultado correcto (en Python usando el módulo re), pero que puede obtener esta información de una sola expresión regular?
>>> for foo in ("MBI", "MIB", "BIM", "BMI", "IBM", "IMB", "MBD"):
... print foo,
... print re.match("[MBDPI]{3}", foo) and "I" in foo
MBI True
MIB True
BIM True
BMI True
IBM True
IMB True
MBD False
con regex Sé que puedo usar | como un operador OR booleano, pero ¿hay un AND booleano equivalente?
o tal vez necesito un poco de búsqueda hacia adelante o hacia atrás?
También puede buscar el carácter 'I' con str.find(). Fuente: http://docs.python.org/library/stdtypes.html#str.encuentra – Dor