2012-09-25 173 views
1


我試圖解析字符串如下:正則表達式分割字符串

* A。 BOSCOLO1,4,JA STARR2,N. LUNARDI4,C. ORI4,JP BENNETT,Jr3,V. JEVTOVIC-TODOROVIC2,3,4,

預期的輸出是下面:

* A 。 BOSCOLO1,4
JA STARR2
N. LUNARDI4
C. ORI4
JP BENNETT,Jr3
五JEVTOVIC-TODOROVIC2,3,4

我不能分隔符(,)分開他們,因爲它是不一致。以上是名稱後跟一個或多個數字。文字後跟數字&逗號直到下一個單詞,並且沒有名稱被允許沒有任何數字。
我不知道如何寫相同的REGEX。任何幫助將不勝感激。
感謝

+0

逗號不能被用作分割炭因爲逗號它實際上是字的一部分。也沒有什麼可以告訴正則表達式應該在哪裏開始分割工作。你可以嘗試使用數字。 –

+1

是它的喜歡的話跟着數字和逗號直到下一個單詞。 – Burfi

+0

什麼',Jr3' ......這實際困難的部分...... @Burfi是不符合「只有名字後面的數字」還有其他這樣的字符串,或者是Jr3或JR [數字]唯一的可能? –

回答

3

您可以使用正則表達式像這樣:;

[*A-Z]\D+\d+(,\d+)* 

實施例:

string data = "*A. BOSCOLO1,4, J. A. STARR2, N. LUNARDI4, C. ORI4, J. P. BENNETT, Jr3, V. JEVTOVIC-TODOROVIC2,3,4,"; 

MatchCollection matches = Regex.Matches(data, @"[*A-Z]\D+\d+(,\d+)*"); 

foreach (Match x in matches) { 
    Console.WriteLine(x); 
} 

輸出:

*A. BOSCOLO1,4 
J. A. STARR2 
N. LUNARDI4 
C. ORI4 
J. P. BENNETT, Jr3 
V. JEVTOVIC-TODOROVIC2,3,4 
+0

感謝Guffa,我用不同的輸入測試了上面的正則表達式,它的工作正常。非常感謝。 – Burfi

相關問題