gpt4 book ai didi

c# - 使用正则表达式获取文件名的中间部分

转载 作者:行者123 更新时间:2023-12-02 19:11:03 26 4
gpt4 key购买 nike

我需要一个可以在文件名中间返回最多 10 个字符的正则表达式。

filename:                          returns:
msl_0123456789_otherstuff.csv -> 0123456789
msl_test.xml -> test
anythingShort.w1 -> anythingSh

我可以使用以下正则表达式捕获开头和结尾以进行删除:

Regex.Replace(filename, "(^msl_)|([.][[:alnum:]]{1,3}$)", string.Empty); *

但完成后我也只需要 10 个字符。

上面正则表达式的解释:

  • (^msl_) - 匹配以“msl_”开头的行
  • | - 或
  • ([.] - 匹配句点
  • [[:alnum]]{1,3} - 后跟 1-3 个字母数字字符
  • $) - 位于行尾

最佳答案

注意 [[:alnum:]] 无法在 .NET 正则表达式中工作,因为它不支持 POSIX 字符类。您可以使用\w(匹配字母、数字、下划线)或[^\W_](匹配字母或数字)。

您可以使用正则表达式,只保留字符串中的前 10 个字符:

new string(Regex.Replace(s, @"^msl_|\.\w{1,3}$","").Take(10).ToArray())

参见 C# demo online:

var strings = new List<string> { "msl_0123456789_otherstuff.csv", "msl_test.xml", "anythingShort.w1" };
foreach (var s in strings)
{
Console.WriteLine("{0} => {1}", s, new string(Regex.Replace(s, @"^msl_|\.\w{1,3}$","").Take(10).ToArray()));
}

输出:

msl_0123456789_otherstuff.csv => 0123456789
msl_test.xml => test
anythingShort.w1 => anythingSh

关于c# - 使用正则表达式获取文件名的中间部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64269565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com