【发布时间】:2014-10-24 12:22:59
【问题描述】:
我正在寻找一个解析以下字符串的正则表达式:
My Name Here(123456789) some_code[some_other_code]
格式比较简单:
- 我的名字 这是一个 Steam 名称(我认为几乎可以是任何名称)。
- 后面是括号之间的数字。名称和左括号之间没有空格。
- 后跟一个空格。
- 在这种情况下,后跟一个代号(我认为它不能包含空格)“some_code”。
- 在这种情况下,在块括号“[some_other_code]”之间后跟另一个代码(同样可能没有空格)。
我想捕捉所有四个:
- “我的名字在这里”
- 123456789
- 一些代码
- some_other_code
以下正则表达式有效:
(.*?)\(([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]*)) 的最后一次匹配作为第二组,而不是第一组...
我想我需要使用回顾之类的东西,但我不知道如何实现这个......有什么想法吗?
【问题讨论】:
标签: regex