2012-04-30 4 views
7

У меня есть строки, какSplit при появлении одного сепаратора

A_B_C_D 
A_B___C_D 

где ___ может быть в любом месте строки.

Что является самым простым способом разделить их на любой _, но не на ___?

+2

так что это результат выглядит, когда она содержит '' ___? – Joseph

+0

Поскольку ключи сгенерированы, это невозможно. –

ответ

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

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

Вместо поиска разделителей мы находим сами компоненты. Обратите внимание, что строки должны быть либо не _ (потому что разделитель _), либо более одного _ с. Поэтому регулярное выражение для их соответствия просто так.

Обратите внимание, что это регулярное выражение игнорирует пустые строки, если ввод начинается или заканчивается _ (например, "_a_" просто возвращают ["a"].)

Смежные вопросы