正则表达式基础

2018-07-05  本文已影响0人  刘家成

前言

正则表达式在各个领域都有涉及,用起来也比较简单,常用的还是有必要记住的,否则对接触新知识会有些屏障。本文内容掌握后,可以处理常用的正则匹配。本文以Python里re包来介绍,若运行下方实例需要导入re包。

字符 描述
\n 换行符
\w 字母、数字、下划线
\W 字母、数字、下划线
\d 十进制整数
\D 十进制整数
\s 空字符
\D 空字符

针对上方表格内容,下面将通过示例进行讲解:

string = '''adsfasfa d
0989djkh
as'''
str = re.compile('\n').findall(string)
print(str)
str = re.compile('\w').findall(string)
print(str)
str = re.compile('\W').findall(string)
print(str)
str = re.compile('\d').findall(string)
print(str)
str = re.compile('\D').findall(string)
print(str)
str = re.compile('\s').findall(string)
print(str)
str = re.compile('\S').findall(string)
print(str)

输出结果:
['\n', '\n']
['a', 'd', 's', 'f', 'a', 's', 'f', 'a', 'd', '0', '9', '8', '9', 'd', 'j', 'k', 'h', 'a', 's']
[' ', '\n', '\n']
['0', '9', '8', '9']
['a', 'd', 's', 'f', 'a', 's', 'f', 'a', ' ', 'd', '\n', 'd', 'j', 'k', 'h', '\n', 'a', 's']
[' ', '\n', '\n']
['a', 'd', 's', 'f', 'a', 's', 'f', 'a', 'd', '0', '9', '8', '9', 'd', 'j', 'k', 'h', 'a', 's']

以上为Python语法,变量可以重复赋值,不会报错。这里都是简单的正则,建议必须背下来,上方表格内容都是匹配的单个字符进行而不是多个字符,单个满足的字符都会打印出来。

字符 描述
. 除换行外任意一个字符
^ 开始位置
$ 结束位置
* 前一个字符出现0\1\多次
? 前一个字符出现0\1次
+ 前一个字符出现1\多次
{n} 前一个字符恰好出现n次
{n,} 前一个字符至少n次
{n,m} 前一个字符至少n,至多m次
| 选择符 或
() 想提取出什么内容,就在正则中用小括号将其括起来

针对上方表格内容,下面将通过示例进行讲解:

string = '''afdaafdd2dadaafadadsf222222333
edu'''
str = re.compile('(\w\d\w\d\d\w)').findall(string)
print(str)
str = re.compile('.').findall(string)
print(str)
str = re.compile('da+').findall(string)
print(str)
str = re.compile('da*').findall(string)
print(str)
str = re.compile('da{1}').findall(string)
print(str)
str = re.compile('da{2}').findall(string)
print(str)
str = re.compile('da|fada').findall(string)
print(str)
str = re.compile("^af(d..).").findall(string)
print(str)
str = re.compile("^afda(a.2..).").findall(string)
print(str)
str = re.compile("(d.).").findall(string)
print(str)
str = re.compile("[^a]").findall(string)
print(str)
string = "phytphonyhjskjsa"
str = re.compile("p.*?y").findall(string)
print(str)
str = re.compile("p.*y").findall(string)
print(str)
str = re.compile("p.+?y").findall(string)
print(str)

输出结果:
['f22222']
['a', 'f', 'd', 'a', 'a', 'f', 'd', 'd', '2', 'd', 'a', 'd', 'a', 'a', 'f', 'a', 'd', 'a', 'd', 's', 'f', '2', '2', '2', '2', '2', '2', '3', '3', '3', 'e', 'd', 'u']
['daa', 'da', 'daa', 'da']
['daa', 'd', 'd', 'da', 'daa', 'da', 'd', 'd']
['da', 'da', 'da', 'da']
['daa', 'daa']
['da', 'da', 'da', 'fada']
['daa']
[]
['da', 'dd', 'da', 'da']
['f', 'd', 'f', 'd', 'd', '2', 'd', 'd', 'f', 'd', 'd', 's', 'f', '2', '2', '2', '2', '2', '2', '3', '3', '3', '\n', 'e', 'd', 'u']
['phy', 'phony']
['phytphony']
['phy', 'phony']
上一篇 下一篇

猜你喜欢

热点阅读