Regex 正则表达式匹配精确的模式,但仅最后一次出现

Regex 正则表达式匹配精确的模式,但仅最后一次出现,regex,Regex,我正在寻找解析以下类型字符串的正则表达式: My Name Here(123456789) some_code[some_other_code] 格式相对简单: 我的名字在这里是一个蒸汽的名字(这几乎可以是我想的任何东西) 后面是括号之间的数字。名称和左括号之间没有空格 后面是一个空格 在本例中,后跟一个代码名(我认为它不能包含空格)“some_code” 在本例中,在块括号“[some_other_code]”之间后跟另一个代码(可能也没有空格) 我想捕捉所有四个: “我的名字在这里”

我正在寻找解析以下类型字符串的正则表达式:

My Name Here(123456789) some_code[some_other_code]
格式相对简单:

  • 我的名字在这里是一个蒸汽的名字(这几乎可以是我想的任何东西)
  • 后面是括号之间的数字。名称和左括号之间没有空格
  • 后面是一个空格
  • 在本例中,后跟一个代码名(我认为它不能包含空格)“some_code”
  • 在本例中,在块括号“[some_other_code]”之间后跟另一个代码(可能也没有空格)
我想捕捉所有四个:

  • “我的名字在这里”
  • 123456789
  • 一些代码
  • 一些其他代码
以下正则表达式适用于:

(.*?)\(([0-9]*)\) (.*?)\[(.*?)\]
问题是,第一个“我的名字在这里”部分也可能包含一个括号之间的数字,我所知道的一切。。。它可以是“Nick(123)(456)Abcd”,而不是“我的名字”。但这并不匹配

相同的正则表达式与此匹配:

Nick(123) (456) Abcd(123456789) some_code[some_other_code]
第一个捕获组现在只捕获“Nick”(而它应该捕获“Nick(123)(456)Abcd”),而第二个捕获组捕获123作为数字,而它应该捕获最后一次出现的123456789

换句话说,我只希望最后出现的([0-9]*)匹配为第二组,而不是第一组


我想我需要用回顾什么的,但是我不知道如何实现这个。。。。任何想法?

只需删除第一个捕获组中的
量词即可。因此,它将捕获从开始(最长匹配)到最后一个
括号)的所有字符

(.*)\(([0-9]*)\) (.*?)\[(.*?)\]

太好了,这比我想象的要容易…谢谢!