2010-04-01 47 views
0

我對於正則表達式是全新的,所以我在這裏尋找一些幫助。Java通過自定義正則表達式匹配拆分字符串

我JDK 1.5

下編譯走這條線的,我是從標準輸入讀取一個例子:

ab:Some string po:bubblegum 

我想要做的是由兩個字符和冒號分割。也就是說,一旦線路被分割並放入一個字符串數組,這些都是應該的條款:

ab:Some string 
po:bubblegum 

我有這個正則表達式現在:

String[] split = input.split("[..:]"); 

這種分裂分號;我想要的是它匹配兩個字符和一個分號,但在開始之前在空格處分割。這甚至有可能嗎?

下面是從字符串數組的輸出:

ab 
Some String po 
bubblegum 

我讀過有關Pattern.compile()爲好。這是我應該考慮的嗎?

回答

3
input.split(" (?=[A-Za-z]{2}:)") 

?=創建一個positive lookahead。這意味着引擎會向前看,看看下一部分是否匹配,而不會消耗該部分。如果它匹配,則會在空格字符上分裂。 [A-Za-z]表示大寫或小寫字母,而{2}指定我們需要兩個與該類匹配的字符。

+0

那個速度很快的人 - 它的效果很好。謝謝一堆。你能解釋它是如何工作的嗎?我可以理解,它正在尋找兩個大寫或小寫字符,然後冒號,但多數民衆贊成它。 非常好,再次感謝。 – tsliwkan 2010-04-01 05:39:25

1

你問了Pattern#compile(String pattern)。你應該考慮使用它,如果你打算使用正則表達式很多,因爲前面提到的方法將正則表達式編譯成快速執​​行的東西,而直接使用String#split(String regex)直接重新編譯正則表達式。

+0

是的,謝謝。我剛剛使用Matthew的正則表達式實現它,它仍然有效。 – tsliwkan 2010-04-01 06:04:40