【问题标题】:Remove querystring parameters from image src从图像 src 中删除查询字符串参数
【发布时间】:2021-03-19 08:08:33
【问题描述】:

我想从图像中删除任何跟踪参考。 例如:

<img class="pixel" src="pixel.gif?tracking=123456">
<img src="pixel1.gif?t=654321">

我想从电子邮件正文中的所有图片中删除问号后的所有内容。我想用 Regex 和 Replace 来做这样的事情:

Regex rRemScript = new Regex(@"??< The part i would like help with >???");
messageBody = rRemScript.Replace(messageBody, "");

所以我需要正则表达式部分的帮助来查找所有

最终结果:

<img class="pixel" src="pixel.gif">
<img src="pixel1.gif">

【问题讨论】:

  • 如果我理解正确:您想等到页面加载后再删除 src 详细信息(使用 javascript)?
  • 不,在我将消息正文保存到数据库之前,我想“清理”消息。我也删除了样式,但那部分我已经解决了
  • 你可以通过 string.IndexOfstring.replace 的组合轻松做到这一点,但使用 Regex 我帮不了你......

标签: c# regex


【解决方案1】:

使用以下代码中的正则表达式:

[TestMethod]
public void TestMethod1()
{
   var input = @"balbla <img class=""pixel"" src=""pixel.gif?tracking=123456"">
<img src=""pixel1.gif?t=654321"" class=""pixel1""> blablabla";

   var regex = new Regex("(<img[^>]*)src=\"([^\"?]*)?[^\"]*\"");

   // test
   var r = regex.Replace(input, "$1src=\"$2\"");

   var expected = @"balbla <img class=""pixel"" src=""pixel.gif"">
<img src=""pixel1.gif"" class=""pixel1""> blablabla";

   Assert.AreEqual(expected, r);

}

正则部分解释:

(&lt;img[^&gt;]*)src=\":匹配img 标签直到它们的src 属性。通过() 保存匹配的部分,以便稍后在替换调用中进行反向引用。

([^\"?]*):获取uri部分直到第一个?。保存它以供反向引用。

[^\"]*\":获取uri的剩余部分。

将其替换为$1src=\"$2\",其中$1 包含第一个,$2 包含第二个保存的反向引用。

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多