C# 需要正则表达式来去除html图像标记文件名中的括号

C# 需要正则表达式来去除html图像标记文件名中的括号,c#,regex,C#,Regex,假设我有一些带有图像标记的html,如下所示: <p> (1) some image is below: <img src="/somwhere/filename_(1).jpg"> </p> <p> (1) some image is below: <img src="/somwhere/filename_1.jpg"> </p> (1)下面是一些图像: 我想要一个正则表达式,它可以去掉文件名中的括号,因此我的ht

假设我有一些带有图像标记的html,如下所示:

<p> (1) some image is below:
<img src="/somwhere/filename_(1).jpg">
</p>
<p> (1) some image is below:
<img src="/somwhere/filename_1.jpg">
</p>
(1)下面是一些图像:

我想要一个正则表达式,它可以去掉文件名中的括号,因此我的html将如下所示:

<p> (1) some image is below:
<img src="/somwhere/filename_(1).jpg">
</p>
<p> (1) some image is below:
<img src="/somwhere/filename_1.jpg">
</p>
(1)下面是一些图像:

有人知道怎么做吗?我的编程语言是C#,如果这有区别的话


我将永远感激你,并将一些非常好的因果报应送给你。:)

在这个简单的例子中,您可以只使用
string.Replace
,例如:

string imgFilename = "/somewhere/image_(1).jpg";
imgFilename = imgFilename.Replace("(", "").Replace(")", "");
或者您需要一个正则表达式来替换HTML字符串中的完整标记吗?

这个(相当密集的)正则表达式应该可以:

string s = Regex.Replace(input, @"(<img\s+[^>]*src=""[^""]*)\((\d+)\)([^""]*""[^>]*>)", "$1$2$3");
string s=Regex.Replace(输入,@“(]*>)”,“$1$2$3”);

Regex.Replace(一些输入,@)(?
)/>
,再次使用任何空格组合,并将它们替换为虚无。

我怀疑如果您使用可以帮助您完成这项工作的,而不是使用正则表达式来判断答案,那么您的工作会容易得多,这将使解析HTML变得更容易,从而实现您想要完成的任务

希望这有帮助, 顺致敬意, Tom.

如果文件名始终与该格式匹配,则可以,但此文件名与属性中任意位置的任何括号匹配:

s = Regex.Replace(@"(?i)(?<=<img\s+[^>]*\bsrc\s*=\s*""[^""]*)[()]", "");

s=Regex.Replace(@“(?i)(?我看不出前后有什么区别。这使得Regex非常简单…您是在重新生成整个html文档、文档片段还是什么?Jeff,区别在于()已从文件名中删除。我们看不到您在说什么,因为您发布的示例文本没有对HTML进行任何转义。@Aistina为您修复了它。我需要避免替换HTML正文中的parentheis(其他标记、文本等)只有当括号位于tags src attribute.Regex中时,才能删除括号。你必须使用HTML解析器。这就是我最终要做的。Regex不起作用,部分原因可能是因为我必须通过第三方库来完成。相反,我只是抓取了所有包含HTML的记录,然后将它转化为HtmlAgility,从图像和锚定标签中去除垃圾,一切都很好。谢谢大家。