代码改变世界

常用的正则表达式

2012-10-22 23:41  音乐让我说  阅读(2110)  评论(0编辑  收藏  举报

工具 RegexTester 下载:https://files.cnblogs.com/Music/RegexTester.zip

在线正则表达式测试网站:https://regex101.com/

 

1. 批量处理 Html img 标签,给 img 标签包裹一个 <a href="${url}"> 标签,用来实现“查看大图”的功能

 

在博客园写文章时,经常要上传图片,而有时候上传的图片是数码照片,尺寸(分辨率)很大。而这时需要在上传完所有的图片后,批量给这些图片增加一个“查看大图”的功能,也就是 Html 代码中给 img 标签包裹一个 a 标签,这个 a 标签的 href 指向 img 的 src 值。

在博客园上传完所有图片后,点击编辑器里面的“编辑HTML源代码”按钮,

比如:

<p>请看如下图片</p>
<p>IMG-01:</p>
<p><img src="http://pic002.cnblogs.com/images/2012/111111/2012102222273010.png" alt="" /></p>
<p>IMG-02:</p>
<p><img src="http://pic002.cnblogs.com/images/2012/111111/2012102222281511.png" alt="" /></p>
<p>IMG-03:</p>
<p><img src="http://pic002.cnblogs.com/images/2012/111111/2012102222285412.png" alt="" /></p>
<p>IMG-04:</p>
<p><img src="http://pic002.cnblogs.com/images/2012/111111/2012102222292513.png" alt="" /></p>
<p>等等,下面可能还有很多、很多图片...</p>
<p>上传完毕!</p>

而按照本文下面说的,需要给这些 img 标签包裹一个 a 标签,a 标签的 href 指向 img 的 src 值。由于图片可能会很多,不可能手工一个一个的加,那么我们需要一个正则表达式工具来替换,比如 VS 自带的搜索与替换,就能满足这个功能,主要是写正则表达式。

我写的正则表达式如下:

Regex: \<\s*[iI][mM][gG]\s+(.*?)src="(?<url>.*?)"(.*?)\/>

Replace: <a href="${url}" target="_blank"><img  src="${url}" width="100%" alt="点击看大图" title="点击看大图" /></a>

示例:

 

 

2. 清除包含 img 标签的 a 标签,同时保留 a 标签中间的 Html 代码

 

Regex: <\s*[a|A]\s*[^>]*>(\s*\<\s*[iI][mM][gG]\s+.*?)<\/[a|A]>

Replace: $1

示例:

 

3. 批量替换 C# 类里面的属性成  “XProperty = ,”。

有时候我们在写代码的代码的时候,比如 Student 类,里面有几十上百个属性(Property),在new 构造的时候,要一个一个的赋值,太麻烦,我就想到用正则表达式来实现。

查找目标:.*?\s+(\w+)\s+\{\s*get\s*;\s*set\s*;\s*\}
替换为:$1 = ,

 

 

4.  批量替换 <a> 标签中的 href 占位符

查找 Regex:(\<a[\s\S]*?href[\s\S]*?=[\s\S]*?")([\s\S]*?\{[\s\S]*?Id[\s\S]*?\:([\s\S]*?)\}[\s\S]*?)("[\s\S]*?>)

替换 Regex:$1http\:\/\/www.baidu.com/?id=$3$4

测试文本:

<a target="_blank" href="{Id:13445}">AMD即将在2019年7月发布Ryazen第三代CPU&nbsp;(更新日期:<span style="color:black;">2019-03-15</span>)(此时状态:<span style="color:red;" title="此时的时间是 2019-04-01 20:56,状态也是这个时候的状态。">新增</span>&nbsp;</a>

用上面的正则替换以后(请注意:只有 href 有变化

<a target="_blank" href="http://www.baidu.com/?id=13445">AMD即将在2019年7月发布Ryazen第三代CPU&nbsp;(更新日期:<span style="color:black;">2019-03-15</span>)(此时状态:<span style="color:red;" title="此时的时间是 2019-04-01 20:56,状态也是这个时候的状态。">新增</span>&nbsp;</a>

 

 

5. 斗鱼直播的标题重命名

Regex:([0-9]?月?[0-9]?[0-9]?[0-9]?号?)\s*(.*?)\s*(201[0-9]\-[0-9]?[0-9]\-[0-9]?[0-9]\s*[0-9]?[0-9]点场)

Replace:$3 $2

 

占位

工具 RegexTester 下载:https://files.cnblogs.com/Music/RegexTester.zip

在线正则表达式测试网站:https://regex101.com/

谢谢浏览!