C# 如何匹配组中最多一个字符序列的任何内容

C# 如何匹配组中最多一个字符序列的任何内容,c#,regex,C#,Regex,我有这个字符串序列 game ( name "!Mario (2000-11-19)(Dokokalaki)(JP)[h][Super Mario Bros.]" description "!Mario (2000-11-19)(Dokokalaki)(JP)[h][Super Mario Bros.]" rom ( name "!Mario (2000-11-19)(Dokokalaki)(JP)[h][Super Mario Bros.].nes" size 4097

我有这个字符串序列

game (
    name "!Mario (2000-11-19)(Dokokalaki)(JP)[h][Super Mario Bros.]"
    description "!Mario (2000-11-19)(Dokokalaki)(JP)[h][Super Mario Bros.]"
    rom ( name "!Mario (2000-11-19)(Dokokalaki)(JP)[h][Super Mario Bros.].nes" size 40976 crc 2e2bf112 md5 b1a0e41cfd30c1d61de3b7900232de59 sha1 7849ccb4cba5714042694da0e076092565023fc9 )
)

game (
    name "'89 Dennou Kyuusei Uranai (1988-12-10)(Induction Produce)(JP)"
    description "'89 Dennou Kyuusei Uranai (1988-12-10)(Induction Produce)(JP)"
    rom ( name "'89 Dennou Kyuusei Uranai (1988-12-10)(Induction Produce)(JP).nes" size 262160 crc 679db8f7 md5 31c66f47bd73568b4a675c9f8d995684 sha1 3918c52a5491695ed6b10b65f59622687dd7dc66 )
)
如果符合给定的crc值,我想匹配
rom(名称“
”大小之间的字符

(?使用此正则表达式:

(?<=rom \( name "").*?(?="" size \d+ crc 2e2bf112)

(?不必使用lookarounds,它们会使工作更加复杂,并且不会带来抵消性的好处。让正则表达式消耗尽可能多的字符串,并使用捕获组来提取您真正感兴趣的部分

Regex r = new Regex(@"rom \( name ""(?<name>[^""]+)"" size \d+ crc 2e2bf112\b");
Match m = r.Match(subjectString);
if (m.Success) {
    resultString = m.Groups["name"].Value;
}
Regex r=newregex(@“rom\(name”“(?[^”“])+)”“size\d+crc 2e2bf112\b”);
匹配m=r.Match(subjectString);
如果(m.成功){
resultString=m.Groups[“name”].Value;
}

(?=“大小”)(?=crc 2e2bf112)
没有达到你的期望。这是不可能的匹配。对食物有好处。为什么在你的“向前看”和“向后看”中有两个双引号?@AvinashRaj以逐字逐句的方式逃避
@AvinashRaj,是的。@AvinashRaj这是你的意见。如果我不得不评论什么,我会忙一整天“更好”。:)对于格式一致的字符串,空格字符是完全足够的,而
\s
匹配垂直空格等等。@AvinashRaj如果Ron想要
\s
,他可以决定并替换使用
[]
的位置。他似乎能胜任正则表达式,他的原始表达式使用空格字符。
Regex r = new Regex(@"rom \( name ""(?<name>[^""]+)"" size \d+ crc 2e2bf112\b");
Match m = r.Match(subjectString);
if (m.Success) {
    resultString = m.Groups["name"].Value;
}