gpt4 book ai didi

c# - 在 .NET 中使用正则表达式拆分字符串

转载 作者:行者123 更新时间:2023-11-30 21:14:32 24 4
gpt4 key购买 nike

我需要一个正则表达式,当我在 .NET 中执行 RegEx.Split() 时,我可以使用它来检查字符串并返回特定项目。我一直在尝试自己做这件事,但我似乎永远得不到我需要的东西,结果也没有任何意义。显然,我不太擅长编写正则表达式。

所以这里是字符串...

"%date - %-5level - [%thread] - %logger - %message - %exception%newline"

我基本上想要返回一个如下所示的数组:

"date"
"-5level"
"thread"
"logger"
"message"
"exception"
"newline"

下面的代码很接近,但不完全是。

Regex exp = new Regex(@"\W+");
string[] s = exp.Split(@"%date - %-5level - [%thread] - %logger - %message - %exception%newline");

我得到以下信息:

""
"date"
"5level"
"thread"
"logger"
"message"
"exception"
"newline"

出于某种原因,我有一个空字符串作为第一个索引,而第三个索引缺少“-”。我假设是因为它不是“单词”的一部分。

“-”暂时搁置,然后我想将“5level”拆分成一个数组:

"5"
"level"

我试验过这个:

Regex exp2 = new Regex(@"(\d+)([a-zA-Z]+)");
string[] s2 = exp2.Split("5level");

但是,除了我想要的拆分项之外,它还返回 2 个带有空字符串的索引:

""
"5"
"level"
""

我对如何格式化表达式来满足我的需求感到困惑。任何帮助将不胜感激。

最佳答案

与其使用 Regex.Split,匹配您需要的标记可能更容易:

MatchCollection matches = Regex.Matches(s, @"%([\w\-]+)");
string[] words = matches.Cast<Match>().Select(m => m.Groups[1].Value).ToArray();

如您所见,拆分可能会添加空匹配项,这些匹配项必须被过滤掉。

关于c# - 在 .NET 中使用正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206798/

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