2011-04-14 66 views
1

我是新來的正則表達式。
需要一些幫助。正則表達式來分割下列行到各個領域?

我想有一個正則表達式,可以給我下面的o/p給定的i/p在java中。

輸入字符串

1. AB,CD,EF,GH  
2. AB,"CD,EF",GH 
3. AB|CD|EF|GH 
4. AB|EF"A" "|GH 

期望輸出
注: E.g對於第一串,我想AB CD EF GH爲相同陣列的4個不同的數組元素。同樣對於下一個I/PS

1. AB CD EF GH 
2. AB "CD,EF" GH 
3. AB CD EF GH 
4. AB EF"A" " GH 

謝謝。

+1

它是否必須是正則表達式?在這裏分割字符似乎更好/更容易。 – 2011-04-14 18:43:35

+0

你是什麼意思?你能給我一個例子嗎?謝謝。 – abc 2011-04-14 18:46:56

+0

爲什麼最後一個元素,沒有均衡的引號,在GH之前分裂? – 2011-04-14 19:23:06

回答

0

從3)和4)您想要匹配不包含|字符的字母序列,而從1)要匹配不包含逗號的字母序列。這必須同時發生,以便序列不能包含任何字符。

或者,2)允許序列包含一個逗號,只要它以引號開頭,在這種情況下,它會一直運行到下一個引號。

+0

是尼爾,這是問題陳述。我想寫一個公共的正則表達式,它將輸入字符串分割爲提到的輸出數組元素。 – abc 2011-04-14 18:57:32

+1

你已經知道如何做任何一個例子嗎? – Neil 2011-04-14 19:02:23

+0

我寫了一個正則表達式,它似乎是做我所需要的,'「(\」(?:[^ \「] + | \」\「)* \」| [^ \\ ] +)「'.. '''''可以用管道('|')或逗號(',')替換....但是如果我有兩個分隔符而沒有任何中間文本,例如'AB | CD || EF '..期待的輸出應該是'AB CD EF'..but但是這沒有發生:( – abc 2011-04-14 19:09:58

0

這是否需要您的功課這是正則表達式?您似乎可以按字符掃描每行字符,並輕鬆替換空格。

+0

If你注意到,第二個I/P字符串......我不想在雙引號之間用逗號(',')替換空格,所以替換不是解決方案。 – abc 2011-04-14 19:15:42

+0

好吧,繼承人一個例子: String s1 =「AB,\」CD,EF \「,GH」 現在您將使用Str ing.split使用逗號作爲分隔符來分割字符串。所以現在你的結果是: AB「CD EF」GH 現在使用for循環遍歷字符串並檢查是否有引號。如果有看到是否有匹配的報價。如果在引號之間有匹配的引號檢查並查看是否有空格。如果有空格,則重寫不包含空格的字符串。 – zamN 2011-04-14 19:53:03

+0

只看最後2個例子,你應該首先檢查一下,看看這個字符串是否包含','。如果沒有,那就用|分割它(如果它包含管道)。 有沒有在同一個字符串中存在管道和逗號的情況?如果是這樣,請確保爲此編程。 – zamN 2011-04-14 19:55:35