Please enable Javascript to view the contents

正则表达式实用小案例

 ·  ☕ 2 分钟

01 移除标签不必要属性

有时候从别的网页中拷贝到一些html结构,会带一些属性,而这些属性是不需要的,我们可以通过正则去掉。如:

<div id="mk-tabs" class="mk-tabs horizontal-style style1-tabs ui-tabs ui-widget ui-widget-content ui-corner-all"><ul class="mk-tabs-tabs ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">

上面那些id,class都是不需要的,当然还有其它属性,可以通过以下方式替换。

  1. 通过 <(\w+)\s[^>]+> 匹配左边标签,当然,关闭标签是不需要匹配的。
  2. 通过 <\1> 替换

下图为Sublime Text 3的文本替换面板:

就可以得到正确的'

    '。

    02 删除换行

    有时候去某些网站上下载视频,附带的字幕内容是换行的,如:

    如上,为了显示好看,把一句话分成两行。而我喜欢中文显示一行,英文显示一行,所以需要把两行压缩成一行。

    当然不能影响前面的序号及时间码,操作为:

    03 转换日期格式

    日期有多种格式,所以会经常有转换日期格式的场景。比如,oracle数据库导出sql的日期格式是这样的:

    to_date('11-04-2002', 'dd-mm-yyyy')
    

    而mysql导入日期格式要求是这样的:

    str_to_date('11/04/2002', '%d/%m/%Y')
    

    所以,需要做这样的转换:

    04 删除重复行

    有一次帮忙看一个字幕文件,里面有很多重复行。这时需要删除一个,留下一下,所以就写了(^.+\n)(?=\1)。

    原理也比较简单:

    1. (^.+\n) 匹配一行
    2. (?=\1) 反向引用+前瞻一下

    这里有个遗留问题,有两个重复行,一行后面多了个空格,如:

    1. abc+空格
    2. abc

    这个怎么处理?

    05 删除行首空白

分享

码中人
作者
码中人
Web Developer