Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式在名称中查找可选后缀_C#_.net_Regex - Fatal编程技术网

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

C# 正则表达式在名称中查找可选后缀,c#,.net,regex,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); va

我需要从下面的模式中找到可选的后缀
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是空的。我在正则表达式中做错了什么?有没有更好的方法来查找括号中的值,而不是使用正则表达式?这里没有足够的信息来确保这在所有情况下都适用,但根据您提供的信息,这将起作用。根据您尚未提供的信息,这可能不起作用


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

您的模式中只有一个捕获组。如果您想要一个正则表达式,请尝试每个组至少需要1个符号的地方。关于名称和前缀还有其他规则吗?它们越受约束,就越容易生成匹配的模式。例如,姓氏中是否可能有空格?名字中可以有空格吗?有可能有带括号的后缀吗?这是一个有效的名字吗:
姓,名(后缀(1))(后缀(2))
?姓氏和名字总是存在吗?那么,要求是什么?预期的输出是什么?我只是在寻找一种从括号中获取后缀值的方法。我错过了suffix1和suffix2的匹配组。修正了正则表达式为@“(.*?)\s*(.*?))\s*(.*?))$”谢谢大家!!