繁体   English   中英

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

[英]Regex match exact pattern but only last occurence

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

My Name Here(123456789) some_code[some_other_code]

格式相对容易:

  • 我的名字这是一个Steam名称(我想的几乎可以是任何名称)。
  • 其后是括号之间的数字。 名称和左括号之间没有空格。
  • 其次是空格。
  • 在这种情况下,后跟一个代号(我认为不能包含空格)“ some_code”。
  • 在这种情况下,在块括号“ [some_other_code]”之间加上另一个代码(可能也没有空格)。

我要捕获所有四个:

  • “我的名字在这里”
  • 123456789
  • some_code
  • 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] *))的最后一次出现作为第二组,而不是第一组...

我想我需要使用回顾功能,但是我不知道如何实现这一点。

只需删除? 第一个捕获组中存在的量词。 因此,它会捕获所有从一开始就人物贪婪高达最后一个( 最长匹配(括号。

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

DEMO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM