2012-04-30 9 views
7

ho stringhe comeSplit a singolo separatore di occorrenza

A_B_C_D 
A_B___C_D 

dove il ___ potrebbe essere ovunque nella stringa.

Qual è il modo più semplice per dividerli in un singolo _ ma non in ___?

+2

così che cosa significa il risultato sembra quando contiene '' ___? – Joseph

+0

Man mano che vengono generate le chiavi, questo non è possibile. –

risposta

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

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

Invece di trovare i separatori, troviamo i componenti stessi. Si noti che le stringhe devono essere o non _ (poiché il separatore è _) o più di uno _ s. Quindi la regex per abbinarli è semplicemente così.

Si noti che questa regex ignora le stringhe vuote se l'ingresso inizia o finisce con _ (ad esempio "_a_" sarà solo tornare ["a"].)