我的脚本目前有问题。
我只想显示Regex的某些部分。

string str = "db_name=Killa db_type=0 db_sync=false db_id=12 db_status=offline|db_name=mcHD db_type=0 db_sync=true db_id=28 db_status=online|db_name=sla db_type=0 db_sync=false db_id=193 db_status=online";
var l = string.Join("|", str);
var reg = Regex.Matches(l, @"db_name=(.+?)\s+db_id=(\d+)\s+db_status=(.+?)").Cast<Match>().Select(a => new
{
    db_name = a.Groups[1].Value,
    db_id = a.Groups[2].Value,
    db_status = a.Groups[3].Value
}).ToList();
foreach (var x in reg)
{
    Console.WriteLine(x.db_name + " " + x.db_id + " " + x.db_status);
}


但这并没有给我想要的,而是这些数据。

Killa db_type=0 db_sync=false 12 o
mcHD db_type=0 db_sync=true 28 o
sla db_type=0 db_sync=false 193 o


那就是我想要的:

Killa 12 offline
mcHD 28 online
sla 193 online


希望我能得到答复,并感谢您的帮助。

最佳答案

您可以将正则表达式更改为

db_name=(\w+)[^|]+db_id=(\d+)[^|]+db_status=(\w+)


并会得到你想要的

关于c# - 列表中的正则表达式多个字符串C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51910706/

10-11 23:51