2014-09-25 92 views
1

我與文字工作像這樣的價值觀:使用正則表達式來提取包含逗號

Graham, Mckenna -- ut Voluptatem ipsam et at.Marvin, Garfield -- non Facere et necessitatibus animi. McLaughlin, Mariah -- consequatur Eveniet temporibus ducimus amet eaque. Lang, Agustina -- pariatur 

正如你所看到的,有效的英文名稱由逗號和空格隔開。我正在尋找一個正則表達式模式來提取這樣的子字符串。逗號應該包含在子字符串中,而不是尾隨的空格。我還沒有找到正確的模式運氣。

我在C#代碼如下所示:

var value = reader.ReadLine(); 
var regex = new Regex(@"[A-Z]\w+,(?=\s)"); 
var match = regex.Match(value); 
+0

既然你沒有正確的模式運氣,也許顯示你已經嘗試過。 – hwnd 2014-09-25 23:19:08

+0

名稱可以包含多少個零件? 1或更多,2或更多,總是2? – Bohemian 2014-09-25 23:28:42

+0

只有兩個部分,姓氏,名字 – user843681 2014-09-25 23:30:48

回答

2

如果你想逗號逗號前後的名稱相匹配,您可以使用下面的。

var rgx = new Regex(@"[A-Z][a-zA-Z]+, *[A-Z][a-zA-Z]+"); 

或者你也可以簡化模式在這種情況下,以下幾點:

var rgx = new Regex(@"(?i)[a-z]+, *[a-z]+"); 

Ideone Demo

+0

它的工作原理。謝謝 – user843681 2014-09-25 23:30:14

0

如果總是有確切2名部分:

/[a-z]+, [a-z]+/i 

使用見demo你的意見。