2012-01-30 40 views
1

給定一個模式,我們可以使用S.split(pattern)將字符串S分成多個部分。但是,結果不是我想要的。我想要那些匹配模式的字符串,即分隔符。我的想法是使用拆分結果形成一個新的模式,然後再次拆分,但需要考慮各種元符號的大量情況。任何直接的方式?在Java模式匹配中獲取分隔符

+0

一個例子可以幫助我們來幫助你 – Jayy 2012-01-30 06:07:37

+0

請向我們提供的例子。 – RanRag 2012-01-30 06:07:56

+2

不是正則表達式有一種'不'運算符嗎?例如。在僞代碼'S.split(!pattern)' – 2012-01-30 06:10:41

回答

3
+1

最好鏈接到最新版本的JavaDocs。我編輯了您的答案以指向J2SE 7.有關獲取最新文檔鏈接的提示,請參見[優點2](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875) 。 – 2012-01-30 06:11:49

+0

正如@AndrewThompson在你的問題的評論中指出的那樣,正則表達式有一個你可以使用的'not'運算符。 – Dawood 2012-01-30 06:24:46

+0

非運算符將不起作用,因爲它會在帶有背靠背分隔符的字符串上返回不正確的結果。 (IE在空格分隔的字符串中連續兩個空格)。 – 2012-01-30 06:58:59

2

你不能只是運行多個裂口或你有可能得到不正確的結果。我可能會使用s.split(模式,2)...

public static Vector<String> getDelims(String s, String pattern) 
{ 
    String[] items = s.split(pattern, 2); 
    if(items.length == 1) return new Vector<String>(); 
    String delim = s.substring(items[0].length()); 
    delim = delim.substring(0, delim.length() - items[1].length());  
    Vector<String> ret = getDelims(items[1], pattern); 
    ret.add(0, delim); 
    return ret; 
} 
相關問題