2014-07-25 40 views
0

我有以下字符串:正則表達式匹配的字符沒有前一個字符

"location-string:location-string:location-C?:\string"

,我想分成以下三個字符串:

location-stringlocation-stringlocation-C?:\string

什麼正則表達式應使用String.split(正則表達式)?

基本上,我想拆分冒號':'字符,除了那些前面加'?'的字符。字符!

在此先感謝, PM。

回答

5

您可以使用負向後視。這其中沒有被?

(?<!\?): 

Java的正則表達式preceeded將是結腸,

"(?<!\\?):" 

DEMO

+1

太快,正確也+1 – anubhava

+0

這是很好的工作。謝謝Avinash! –

+0

很高興出來:-) –

0

你可以使用一個split()與限制相匹配。

public static void main(String[] args) { 
    String s = "location-string:location-string:location-C?:\\string"; 
    System.out.println(Arrays.toString(s.split(":", 3))); 
} 

O/P:

[location-string, location-string, location-C?:\string] 
+0

最遺憾的是,這是基於特殊情況(?:)只發生在*非常*特殊的位置(第三和最後一個)。考慮到「我想拆分冒號」,你確定這是一個很好的答案:'除了那些前面加'?'的字符外,字符」? – laune

+0

作爲評論指標的雙反斜槓? – laune

+0

@laune - yes ..這與給定的字符串非常緊密地結合在一起。我只是指出這也可以這樣做。 – TheLostMind

相關問題