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*(.*?))$”谢谢大家!!