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]*)\) (.*?)\[(.*?)\]
太好了,这比我想象的要容易…谢谢!