c# - 从图像 src 中删除查询字符串参数
问题描述
我想从图像中删除任何跟踪参考。例如:
<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, "");
所以我需要正则表达式部分的帮助来查找所有 <image src 并在“?”之后获取所有内容。
最终结果:
<img class="pixel" src="pixel.gif">
<img src="pixel1.gif">
解决方案
使用以下代码中的正则表达式:
[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);
}
正则表达式部分的解释:
(<img[^>]*)src=\"
:匹配img
标签直到它们的src
属性。保存匹配的部分,()
以便稍后在替换调用中进行反向引用。
([^\"?]*)
: 得到 uri 部分直到第一个?
。保存它以供反向引用。
[^\"]*\"
: 获取 uri 的剩余部分。
将其替换为$1src=\"$2\"
,其中$1
包含第一个、$2
第二个保存的反向引用。
推荐阅读
- ios - 如何删除使用 observe() API 添加的 KVO 观察者?
- r - 使用 map 从 tibble 生成 tibble 列表并选择
- pandas - 为列中具有唯一值的 k 均值聚类准备股票数据
- mysql - 如何在mysql中选择一个字段
- angular - 茉莉花、量角器和摩卡咖啡的基本概念
- r - R- 删除尾词
- javascript - “Firebase”类型不可分配给“null”类型。TS2322
- django - 从 django.utils 导入翻译不适用于 shell
- excel - 根据选项按钮选择将文本框正值转换为负值
- html - 如何使用 CSS 制作高亮三角形?