028-86261949

当前位置:首页 > 技术交流 > 正则表达式

正则表达式

2019/07/17 15:43 分类: 技术交流 浏览:1

在遇到复杂的文本查询或替换时我们常常用到正则表达式,本文档将以我们工作中常用到的文本查询或替换做介绍。

1、正则表达式简介

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

1.1、非打印字符匹配

 

字符

描述

\f

匹配一个换页符

\n

匹配一个换行符

\r

匹配一个回车符

\s

匹配任何空白字符,包括空格、制表符、换页符等等

\S

匹配任何非空白字符

\t

匹配一个制表符

1.2、特殊字符匹配

字符

描述

$

匹配输入字符串的结尾位置

( )

标记一个子表达式的开始和结束位置

*

匹配前面的子表达式零次或多次

+

匹配前面的子表达式一次或多次

.

匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。

[

标记一个中括号表达式的开始

?

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符

^

匹配输入字符串的开始位置

{

标记限定符表达式的开始

|

指明两项之间的一个选择

 

1.3、限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种

字符

描述

*

匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。

+

匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

?

匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1}。

{n}

n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,}

n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。

{n,m}

m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

 

2、常用的notpad++编辑工具中正则表达式的使用

2.1、假设有如下文本文件

 

2.2、例子:假设需要将2.1图中的每行开始的tab取消掉。

步骤1:打开替换框。(快捷键ctrl+h)

步骤2:按下图进行设置

步骤3:先点击右侧的查找下一个,检查表达式是否填写准确,如果检查没有问题,点击全部替换即可,替换完成后的效果如下图。

 

3、World中通配符的使用。

​3.1、假设有如下world文档

 

3.2、例子:假设需要删除所有的邮箱

步骤1:打开替换框。(快捷键ctrl+h)

步骤2:按下图进行设置

步骤3:先点击右侧的查找下一处,检查表达式是否填写准确,如果检查没有问题,点击全部替换即可,替换完成后的效果如下图。

4、python中通配符的使用。

​4.1、假设有如下目录文档

 

4.2、例子:我们需要取出所有文件的学号

#标签:正则表达式