我在这里捕获重复的群体时遇到问题,有人可以帮忙吗?
字符串:Ushinski K. D.(Konstantin Dmitrievich)
我正在使用的正则表达式是:
(?i)(.*)((?:[a-z]{1,2}\.\s)+)\(.*
但它正在将"Ushinski K. "
视为第1组,将"D. "
视为第2组。但我的目标是将"Ushinski "
视为第1组,将"K. D. "
视为第2组。非常感谢帮助。
答案 0 :(得分:0)
如果您的“名字”没有空格:
(?i)(\S*)\s*((?:[a-z]{1,2}\.\s)+)\(.*
我建议您将此网站用于正则表达式:https://regex101.com/
修改:如果它有空格但没有'。':
(?i)([^\.]+)\s+((?:[a-z]{1,2}\.\s)+)\(.*
答案 1 :(得分:0)
您必须使用(.*?)
,或者您可以使用Word Boundaries (\b.*\b)
代替(.*)
查看此帖What is the difference between the regex (.*?) and (.*)?
(?i)(.*?)\s((?:[a-z]{1,2}\.\s)+)\(.*
或
(?i)(\b.*\b)\s((?:[a-z]{1,2}\.\s)+)\(.*