正则表达式

1. 什么是正则表达式

在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。

你可能使用过Windows下用于文件查找的通配符,也就是*?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求。

假设你在一篇英文小说里查找hi,你可以使用正则表达式hi

这几乎是最简单的正则表达式了,它可以精确匹配字符串hi。

不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等。用hi来查找的话,这里边的hi也会被找出来。如果要精确地查找hi这个单词的话,我们应该使用\bhi\b

\b是正则表达式的一个元字符,代表着单词的开头或结尾,也就是单词的分界处。

如果同时使用其它元字符,就能构造出功能更强大的正则表达式。比如下面这个例子:

0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字。

这里的\d是个新的元字符,匹配一位数字(0...9)。-不是元字符,只匹配它本身。

为了避免重复,也可以这样写这个表达式:0\d{2}-\d{8}。这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。

2. 常用元字符

正则表达式常用的元字符

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

正则表达式常用的限定符

语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

下面来看看更多的例子:

\ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)。

\b\w{6}\b 匹配刚好6个字符的单词。

关于正则表达式更多信息,可以参考http://deerchao.net/tutorials/regex/regex.htm

3. JDA正则表达式匹配和替换

3.1. 函数rpa_regMatchAll匹配字符串的所有项:

result = rpa_regMatchAll(r'\d+', 'jingdong 123 google 456')

第一个参数是正则表达式,第二个参数是要匹配的字符串,返回匹配的所有字符串列表。在这个例子中返回['123', '456']

3.2. 函数rpa_regMatchFirst匹配字符串的第一项:

result = rpa_regMatchFirst(r'\d+', 'jingdong 123 google 456')

第一个参数是正则表达式,第二个参数是要匹配的字符串,返回匹配的第一个字符串。在这个例子中返回123

3.3. 函数rpa_regSub可以执行正则表达式替换:

phone = "2004-959-559 # 这是一个电话号码"
num = rpa_regSub(r'\d', "x", phone)
print(num)

第一个参数是正则表达式,第二个参数是用来替换的字符串,第三个参数要被替换的原始字符串,第四个参数是可选参数,表示是否只替换第一项(默认为false,全部替换)。返回替换完成后的字符串。在这个例子中返回xxxx-xxx-xxx # 这是一个电话号码

powered by Gitbook修订时间: 2021-04-15 15:56:54

找到相关内容

    未找到""相关内容

    找到相关内容

      未找到""相关内容