2012-04-30 17 views
7

que tienen cadenas comoSplit en ocurrencia solo separador

A_B_C_D 
A_B___C_D 

donde el ___ podría estar en cualquier lugar en la cadena.

¿Cuál es la forma más fácil de dividirlas en cualquier _ pero no en ___?

+2

así que lo que se ve el resultado como cuando contiene '' ___? – Joseph

+0

A medida que se generan las claves, esto no es posible. –

Respuesta

8
>>> "A_B_C_D".match(/(?:[^_]|_{2,})+/g) 
["A", "B", "C", "D"] 

>>> "A_B___C_D".match(/(?:[^_]|_{2,})+/g) 
["A", "B___C", "D"] 

En lugar de encontrar los separadores, encontramos los componentes. Tenga en cuenta que las cadenas no deben ser _ (porque el separador es _), o más de un _ s. Entonces, la expresión regular que los combina es simplemente así.

Tenga en cuenta que esta expresión regular hace caso omiso de las cadenas vacías si la entrada se inicia o termina con _ (por ejemplo "_a_" se acaba de regresar ["a"].)