2013-07-10 177 views
1

假設我想要通過空格字符或%20字符串拆分字符串,應該如何編寫我的正則表達式?Java正則表達式使用不同的分隔符分割字符串

我嘗試了以下,但它沒有奏效。

String regex = "[\\s+, %20]"; 
String str1 = "abc%20xyz"; 
String str2 = "abc xyz"; 

str1.split(regex); 
str2.split(regex); 

該正則表達式在str1上似乎不起作用。

回答

3

使用交替|:如果要通過拆分

String regex = "(\\s|%20)";

:如果你想通過一個空格或一個 「%20」 分裂

String regex = "(?:\\s+|%20)+"; 
+0

'?'是什麼意思? –

+1

@OneTwoThree:'(?:...)'用於分組而不捕獲 –

+0

等待,但這與我想要的不一樣。 (我相信這個正則表達式意味着被一個或多個'%20'分割,這不是我想要的。) –

1
String regex = "(\\s{1}+|%20{1}+)"; 
+0

在你的「{1} +」中,就像說我只想要一個或多個這些角色? –

+0

不,「{1} +」就像說一遍,「++」是指一次或多次,例如。 '「abc%20%20%20xyz」.split(「([%20] ++)」)。length == 2;'but'「abc%20%20%20xyz」.split(「(%20+ )「)。length == 4;' –

+0

嗯,這很有趣。謝謝你激發我的好奇心,我必須閱讀這個。 –

0

,試試這個至少一個空格或至少一個「%20」,然後試試這個:

String regex = "(\\s+|(%20)+)";
相關問題