2016-03-04 88 views
0

我需要從以下方式找到可選後綴
母鹿,約翰(JR)(IV) - suffix1是JR後綴2 IV
母鹿,約翰(JR) - 後綴1是JR和siffix 2是空
李四,約翰 - 無論suffix1和後綴2是空正則表達式來查找名字可選後綴

我曾嘗試下面的方法來找到後綴

MatchCollection matches = Regex.Matches("Doe, John (JR) (IV)", @"(.*?)\s*(?:\(.*?\))?\s*(?:\(.*?\))?$", RegexOptions.IgnoreCase); 
var name = matches[0].Groups[1].Value; 
var suff1 = matches[0].Groups[2].Value; 
var suff2 = matches[0].Groups[3].Value; 

但是suff1和suff2是空的。在正則表達式中我做錯了什麼,是否有更好的方法來找到圓括號內的值,而不是使用正則表達式

+2

您的模式中只有一個捕獲組。如果你想要一個正則表達式,試試['(。+?)\ s *(?:\((。+?)\))?\ s *(?:\((。+?)\))?$' ](http://regexstorm.net/tester?p=(%2B%3F)%5CS *(%3F%3A%5C((。%2B%3F)%5C))%3F%5CS *(% 3f%3a%5c((%2b%3f)%5c))%3f%24&i = my + name +(534)+(767))其中每個組需要至少1個符號。 –

+1

是否有關於名稱和前綴的其他規則?越容易製作出匹配的圖案就越容易。例如,是否有可能在姓氏中有空格?名字中可能有空格嗎?是否可以有括號的後綴?像這是一個有效的名字:'姓,名(後綴(1))(後綴(2))'?姓和名是**總是**現在嗎? – Nick

+0

那麼,什麼是要求和預期輸出是什麼? –

回答

1

沒有足夠的信息來確保這將適用於所有情況,但基於信息你已經給了,這將工作。根據您沒有提供的信息,這可能不起作用。

(.+?)(?:\s*\((.+?)\))?(?:\s*\((.+?)\))?$