首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果你想用正则表达式解决一个问题……

正则表达式的功能很强大,我们常常用的搜索功能就是通过它来实现的,只要有足够的细心和耐心就很容易学会。

正则表达式(Regular Expression)是一种小型的、高度专业化的编程语言,通常被用来检索、替换那些符合某个模式(规则)的文本,在Python中通过内嵌集成re模块,可以直接调用。

最简单的正则表达式就是普通字符串,可以匹配其自身。比如:正则表达式'python'可以匹配字符串'python'。

常用的字符含义

. 代表任意字符

[0-9]0到9之间的任意数字

[a-z] 小写字母任意之一

[A-Z] 大写字母任意之一

\d 等同于[0-9]

\D 等同于[^0-9]匹配非数字

\w 等同于[a-z0-9A-Z_]匹配大小写字母、数字和下划线

\W 等同于[^a-z0-9A-Z_]等同于上一条取非

+ 前面元素至少出现一次

* 前面元素出现0次或多次

? 匹配前面的一次或0次

^ 作为开始标记

$ 作为结束标记

| 逻辑或操作符

- 定义一个区间

\ 对下一字符取非(通常是普通变特殊,特殊变普通)

匹配前一个字符或子表达式n次

匹配前一个字符或子表达式至少m次至多n次

re模块中常用的函数

1、compile()

编译正则表达式模式,返回一个对象的模式。

格式:

re.compile(pattern,flags=0)

pattern: 编译时用的表达式字符串。

flags 编译标志位,用于修改正则表达式的匹配方式。

>>> string1 = 'Python is a very good programming language'

>>> pattern1 = re.compile(r'Python')

>>> pattern1

re.compile('Python')

>>> pattern1.findall()

['Python']

2、match()

决定RE是否在字符串刚开始的位置匹配。

格式:

re.match(pattern, string, flags=0)

>>> m = re.match(r'hello','hello,world!Hello,World!',re.I)

>>> m.group()

'hello'

(注:re.I使匹配不分大小写)

3、search()

在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

格式:

re.search(pattern, string, flags=0)

>>> re.search(r'hello','World,Hello!',re.I).group()

'Hello'

注:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

4、findall()

遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。

格式:

re.findall(pattern, string, flags=0)

>>> p = re.compile(r'\d+')

>>> p.findall('aaa12bbb34c56d78')

['12', '34', '56', '78']

(注:找到字符串中所有的数字,+表示数字至少出现一次)

5、finditer()

搜索string,找到匹配的所有子串,并把它们作为一个迭代器返回。

格式:

re.finditer(pattern, string, flags=0)

>>> iter = re.finditer(r'\d+','one1two2three3four4')

>>> for i in iter:

print(i.group())

1

2

3

4

6、split()

按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。

格式:

re.split(pattern, string[, maxsplit])

>>> re.split(r'\d+','one1two2three3four4five5')

['one', 'two', 'three', 'four', 'five', '']

以上是正则表达式的一些总结,欢迎大家指正。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190128B16A9J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券