正则表达式在第二个最后一个下划线之后grep所有数字

1 regex

我希望在字符串的第二个最后一个下划线之后得到所有角色的任何想法如何实现

Input                             Output
PART1_PART2_PART3_G2010           PART3_G2010
Run Code Online (Sandbox Code Playgroud)

任何想法正则表达式应该是什么样子

lee*_*mes 6

.*_([^_]*_[^_]*)$
Run Code Online (Sandbox Code Playgroud)

不一定是下划线之间特定的部分总数,就像Andrea Spadaccini的正则表达式一样.

  • 前两个符号`.*`捕获每个字符,因为`.`捕获一个任意字符,`*`是"尽可能多"的量词.然后,应该出现下划线.括号中的表达式应捕获下划线之间的两个部分.好吧,首先,我们捕获所有(再次是*)非下划线字符.这是使用方括号完成的,并说我们想要除(`^`)下划线=>`[^ _]`之外的任何字符.最后一个符号`$`定义输入字符串的结尾.我认为有可能在开头就把这个或者`.*`留下来...... (3认同)

jor*_*iki 5

如果您知道输入有三个下划线,Andrea Spadaccini 的答案就有效。如果问题的含义更广泛,指的是第二个下划线之后的所有内容,而与其之前的下划线数量无关,则正则表达式需要从末尾 ($) 开始搜索,如下所示:

 _([^_]*_[^_]*)$
Run Code Online (Sandbox Code Playgroud)