c#Regex.Replace无法正常工作,但Regex.Match()。value给出了正确的匹配

时间:2013-05-26 05:00:22

标签: c# regex

我正在尝试进行正则表达式替换并且它似乎不起作用但是在使用Regex.Match()检查匹配时。使用相同的正则表达式的值,我看到它匹配我想要匹配的内容。我很困惑这里发生了什么。我试图去除一个很长的字符串的部分。

Parallel.ForEach(resultList, s =>
            {
            s = Regex.Replace(s, "description:.*\\.,", string.Empty);
            s = Regex.Replace(s, "icon:.*\\.png,", string.Empty);
            s = Regex.Replace(s, "medium:.*\\.png,", string.Empty);
            s = Regex.Replace(s, "large:.*\\.png,", string.Empty);
            s = Regex.Replace(s, "glasswareId:[ ][0-9],", string.Empty);

            s.Trim();
            }
        );

resultList是List<string>

这是我想要匹配的字符串,并在

上进行替换

目前我正在尝试删除说明,图标和glasswareId。 这是我从Web服务器返回的字符串。

[编辑:字符串编辑为包含更少] 这是一个不起作用的示例字符串,粗体显示我要删除的内容

名称:Blue Moon Vintage Blonde,描述:我们永远不知道接下来会激发我们的酿酒师Keith Villa的灵感。对于我们的限量版Vintage Blonde,它恰好是来自加利福尼亚的葡萄和27年的下班后爱好.rnrnKeith对酿造啤酒有着明显的热情。那不用说了。但他对葡萄酒酿造也有一点鲜为人知。 1995年,当他碾碎葡萄并回想起他在加利福尼亚州和法国葡萄酒之乡的旅行时,将啤酒和葡萄酒混合在一起的想法突然出现在了他脑海中。好奇,他不得不试一试。他开始使用霞多丽葡萄的汁液,使啤酒变得清脆,质量轻,非常像一杯霞多丽。然后,他使用白色小麦作为唯一的谷物,以创造一个干净,光滑的完成,这是其他麦芽不能实现的。经过几个月的窖藏老化后,他品尝了他的最新作品。他对清爽和清爽的口感感到惊喜。2006年,随着葡萄酒和Craft啤酒越来越受到饮用者的欢迎,他认为现在是将它带回来的好时机。经过几年的节日和特别活动,它开始获得追随者。然后在2010年,它刚刚从Great American Beer Festivalu00ae拿回一枚金牌。知道一种啤酒应该分享这种优点,我们在2011年将它作为Vintage Blonde Aleu2122分发。现在,六年后,Vintage Blonde Ale在全国范围内发布供所有人享用。 abv:8.5,ibu:2, glasswareId:8,

1 个答案:

答案 0 :(得分:1)

每次在foreach中更改s时,您只是更改局部变量s指向的内容,而不是列表中的字符串。
您可以创建一个新列表(在循环外声明的列表)并附加到该列表或通过索引或其他方式修改原始列表。
此外,对Trim()的调用根本没有效果,因为您需要将新创建的字符串分配给某些内容(Trim()不会修改原始字符串,实际上字符串是不可变的。)