如何使用正则表达式从最后两个下划线截断字符串
本文关键字:两个 下划线 字符串 正则表达式 何使用 最后 | 更新日期: 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
构建结果字符串。
请注意,如果您传递GroupOwner12
或GroupOwner_12
,结果将是一个空字符串,因为在输入中没有2个下划线。
第一个任务是描述你想要匹配的部分:它是一个下划线,后面跟着零个或多个非下划线,后面跟着另一个下划线,在到达字符串结束之前还有更多的非下划线。
它的正则表达式是这样的:
_[^_]*_[^_]*$
匹配它并用空字符串替换,将匹配的部分从字符串中删除。
1 .演示
你可以通过"折叠"相同的部分来进一步简化表达式:
(_[^_]*){2}$
演示2。