如何使用正则表达式从最后两个下划线截断字符串

本文关键字:两个 下划线 字符串 正则表达式 何使用 最后 | 更新日期: 2023-09-27 18:03:50

我想截断字符串的最后一秒下划线。例如,如果我的字符串是GroupOwner_1_2,我想构造_1_2,并且只得到GroupOwner作为正则表达式的结果。

有谁能帮我一下吗?

如何使用正则表达式从最后两个下划线截断字符串

您可以使用LINQ来代替正则表达式:

var str = "GroupOwner_1_2";
var result = string.Join("_", str.Split('_').Reverse().Skip(2).Reverse());
// => GroupOwner

参见c# demo

str.Split('_')_将字符串分成块,.Reverse()反转结果中的项目,.Skip(2)丢弃第一个(实际上是最后一个)块,.Reverse()将项目顺序恢复到原始顺序。string.Join构建结果字符串。

请注意,如果您传递GroupOwner12GroupOwner_12,结果将是一个空字符串,因为在输入中没有2个下划线。

第一个任务是描述你想要匹配的部分:它是一个下划线,后面跟着零个或多个非下划线,后面跟着另一个下划线,在到达字符串结束之前还有更多的非下划线。

它的正则表达式是这样的:

_[^_]*_[^_]*$

匹配它并用空字符串替换,将匹配的部分从字符串中删除。

1 .

演示

你可以通过"折叠"相同的部分来进一步简化表达式:

(_[^_]*){2}$
演示2。