2015-07-08 6 views
-2

Допустим, у нас есть строка:Разбивает строку с несколькими разделителями, сохраняя при этом эти разделители

String x = "a| b |c& d^ e|f"; 

То, что я хочу получить, выглядит так:

a 
| 
b 
| 
c 
& 
d 
^ 
e 
| 
f 

Как я могу добиться этого с помощью x.split(regex)? А именно, что такое регулярное выражение?

Я попробовал эту ссылку: How to split a string, but also keep the delimiters?

Это дает очень хорошее объяснение о том, как сделать это с одним разделителем. Однако использование и изменение того, что подходит для множества разделителей (механизм lookahead и lookbehind), не так очевидно для тех, кто не знаком с регулярным выражением.

+3

хорошего требование док .... теперь вы должны перейти к этапу осуществления. –

+3

Я отказываюсь отвечать на это, потому что это a) вероятно, дубликат, b) возможно, домашнее задание, и c) не прилагает усилий – Aify

+0

Пожалуйста, разместите вашу попытку. И почему бы вам просто не разделить, используя пробел как разделитель? – sstan

ответ

2

Регулярное выражение для splitsplitting на дополнительных пространств после границы слова является

\\b\\s* 

Обратите внимание, что \\b проверяет предыдущий символ является буквой или цифрой или символом подчеркивания, а затем совпадает с любым количеством пробельных символов что строка будет разделена.

Вот пример Java code on IDEONE:

String str = "a| b |c& d^ e|f"; 
String regex = "\\b\\s*"; 
String[] spts = str.split(regex); 
    for(int i =0; i < spts.length && i < 20; i++) 
    { 
     System.out.println(spts[i]); 
    } 
+0

Как насчет «x1 | x2^x3 & x4», и я хочу получить [«x1», «|», «x2», «^», «x3», "," x4 "]? Благодарю. – user3277360

+0

Я думаю, что лучшее, что я могу получить для split, - ['(? <= \\ S \\ d | [^ \\ w \\ s]) \\ s *'] (http://ideone.com/VINHjO) –

+0

emm, спасибо, но он не работает на «x1 | yy & zz^xyz», который я хочу ["x1", "|", "yy", "&", "zz", "^" , "xyz"] – user3277360

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