查找最后一个下划线及其后面的所有文本的正则表达式

7

我的样本文本类似于以下列表:

  • alpha123_4rf_Joe
  • 45beta_Frank
  • Red5Great_Sam_Fun

我想使用(notepad++正则表达式查找和替换)得到以下结果:

  • alpha123_4rf
  • 45beta
  • Red5Great_Sam

我需要的仅是正则表达式,因为我了解notepad++ :-)


正则表达式: 搜索:(_[^_]*){1,}$
替换:留空

可能是在下划线后查找字母的正则表达式的重复问题。 - ScottMcGready
1
你目前尝试了什么?还是你期望别人为你编写表达式? - MarsAtomic
3个回答

24

尝试这个:

_[^_]+ $

用空字符串替换。


解释如下:

_匹配一个下划线字符

[^_]+匹配任何下划线字符,一次或多次(+

$匹配字符串结束位置


1
为了使正则表达式匹配结尾的下划线而没有后面的字符(例如 HelloWorld_ => HelloWorld),请使用 _([^_]+)?$,它可选择性地匹配任何不是 _ 字符的一个或多个字符。 - CrushedPixel

1

您可以使用:

/^(.*)(_.*?)$/\1/

演示


0
如果您正尝试使用PromQL label_replace进行分组,那么这将对您有所帮助:
[^.*]+_(.*?)$

我知道这篇文章与记事本++无关-然而,这篇文章一直出现在我的搜索中,我发现给出的解决方案不能与PromQL的正则表达式变体一起使用。添加此答案以供将来的人们在类似情况下着陆。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接