gpt4 book ai didi

c# - 需要一些正则表达式帮助

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:48 25 4
gpt4 key购买 nike

尝试匹配包含在一个字符串中的数据:

vsan 1 interfaces:
fc2/1
vsan 10 interfaces:
fc1/1 fc1/2 fc1/3 fc1/4
fc1/5 fc1/6 fc1/7 fc1/8
fc1/9 fc1/10 fc1/11 fc1/12
fc1/13 fc1/14 fc1/15 fc1/16

我得到的输出按每个 vSAN 正确分组,但我只得到每个中的第一个接口(interface) (fcnn/nn)。例如,在 vSAN 10 中,我想要所有接口(interface),但我只得到 fc1/1。
这是我正在使用的正则表达式:

string MemberMatchString = 
@"vsan\s(?<number>\d+)[\s]interfaces:\n\s+(?<interfaces>\sfc\d+/\d+)\s+\n?";
MatchCollection MemberList = Regex.Matches(block, MemberMatchString);

最佳答案

根据 parapura 的建议,我会使用 String.Split() ,至少要检索接口(interface):

String block = "vsan 10 interfaces:\nfc1/1             fc1/2   fc1/3\nfc1/4";
String number = Regex.Match(block, @"vsan\s(?<number>\d+)\sinterfaces:").
Groups["number"].Value;
String[] interfaces = block.Substring(block.IndexOf(':') + 2).
Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

您只能获得第一个界面,因为您的正则表达式要求匹配(简化):

vsan X interfaces:
fcX/X

这意味着您希望 vsan X interfaces: 出现在每个 fcX/X 的前面,而在您的字符串中并非如此。

关于c# - 需要一些正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202541/

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