正则表达式
问题场景:
做项目,遇到需要用正则表达式来处理文本数据,菜鸡的我又开始了现学现卖的自我救赎之路。现学现卖的过程中将笔记心得记录下来,以供后续温习,或者给他人提供帮助。边学边记,文章若有什么不妥,欢迎评论区怼我,谢谢。
什么是正则表达式
正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。
在python中使用正则表达式的正确打开方式如下:
import re
pattern = re.compile(r'[A-Za-z0-9-]') #编译字符串
a = '我好菜鸡a我好菜鸡123-'
b = pattern.findall(aa)
b
输出结果
['a', '1', '2', '3', '-']
#把字符串中的英文(大小写都有)、数字以及'-'找出来
只需要将正则表达式放到 r’ ' 引号里即可。
okay,正则表达式千变万化,具体的怎么匹配出自己想要的字符,还是要从底层去了解一下各种符号的含义,而不是直接去网上搜常用的正则表达式,虽然一般的需求都能在网上找到,但是不够灵活。
先来一个在线测试正则表达式的网址: 在线练习
1、基本匹配
匹配具体的一个词,例如the(注意大小写敏感)
pattern = re.compile(r'the')
aa = 'the我好菜鸡a我好菜鸡123-'
b = pattern.findall(aa)
b
输出结果
['the']
看到了吧,就是这么简单!!!
2、元字符
正则表达式主要依赖于元字符。 元字符不代表他们本身的字面意思,他们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思。以下是一些元字符的介绍:
元字符 | 描述 |
---|---|
. | 句号匹配任意单个字符除了换行符。 |
[ ] | 字符种类。匹配方括号内的任意字符。 |
[^ ] | 否定的字符种类。匹配除了方括号里的任意字符 |
* | 匹配>=0个重复的在*号之前的字符。 |
+ | 匹配>=1个重复的+号前的字符。 |
? | 标记?之前的字符为可选. |
{n,m} | 匹配num个大括号之前的字符或字符集 (n <= num <= m). |
(xyz) | 字符集,匹配与 xyz 完全相等的字符串. |
| | 或运算符,匹配符号前或后的字符. |
\ | 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ |
^ | 从开始行开始匹配. |
$ | 从末端开始匹配. |
怎么样,是不是会了?(手动狗头,我们使用大量的例子来解释)
2.1 点运算符.
. 运算符属于最简单的一个例子了吧。可以匹配任意一个字符。
比如’.the’就是要匹配出后面跟着”the“的字符串
pattern = re.compile(r'.the')
aa = 'a啊the我好菜鸡a我好菜鸡123-'
b = pattern.findall(aa)
b
输出结果
['啊the']
2.2 字符集[]
方括号[]用来指定一个字符集。括号里面可以用-来表示字符的