2014-09-25 91 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你的意见。