正则表达式在名称中查找可选后缀

时间:2016-03-04 18:38:31

标签: c# .net regex

我需要从下面的模式中找到可选的后缀
Doe,John(JR)(IV) - 后缀1是JR,后缀2是IV
Doe,John(JR) - 后缀1是JR,siffix 2是空的
Doe,John - 后缀1和后缀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是空的。我在正则表达式中做错了什么,是否有更好的方法在括号内找到值而不是使用正则表达式

1 个答案:

答案 0 :(得分:0)

这里没有足够的信息来确保在所有情况下这都适合您,但根据您提供的信息,这将有效。根据您未提供的信息,这可能不起作用。

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