He escrito 2 RE para hacer coincidir varias secuencias de cadenas en una cadena. por ej. supongamos que las dos expresiones regulares son RE1
, RE2
. Las cadenas pueden estar en estas 4 formas;Fusionar varias expresiones regulares en una RE
1) Match ONLY RE1 'one or more times' 2) Match ONLY RE2 'one or more times' 3) Match RE1 'one or more times' AND match RE2 'one or more times' 4) Match NEITHER RE1 NOR RE2
Actualmente estoy usando if
para comprobar cada uno de ellos, pero sé que es muy caro como lo estoy haciendo el juego para una cadena en particular varias veces. Pensé en usar 'o' |
pero el problema con eso es que regex dejará de coincidir una vez que encuentre la primera secuencia coincidente y no continúe buscando otras. Quiero encontrar secuencias coincidentes 'una o más veces'.
Actualización:
eg: RE1 = (\d{1,3}[a-zA-Z]?/\d{1,3}[a-zA-Z]?) RE2 = (\babc\b) String: *some string* 100/64h *some string* 120h/90 *some string* abc 200/100 abc *some string* 100h/100f Matches: '100/64h', '120h/90', 'abc', '200/100', 'abc', '100h/100f'
Cómo puedo combinar estos 2 ER para hacer mi programa eficiente. Estoy usando Python para codificar esto.
Por favor, después de su código actual. –
No tiene ninguna bandera global que pueda establecer mientras usa | entre ustedes expresiones regulares? – Stephan
@Mahin, esto _será_ útil para usted, aunque en PHP: http://stackoverflow.com/questions/6565379/preg-replace-with-multiple-patterns-replacements-at-once – Qtax