美文网首页
正则表达式

正则表达式

作者: l_b_n | 来源:发表于2017-04-17 17:43 被阅读0次

常用方法

findall:

匹配所有符合规律的内容,并且返回的是一个列表

search:

匹配第一个符合规律的内容,返回一个正则对象

Sub:

替换符合规律的内容,并返回

用法解析

"."的用法:

import re
#from re import findsll#do not use this in a large project
s = 'hhhhxyxy'
a = re.findall('x.',s)
b = re.findall('x...',s)
print(a)
#['xy','xy']返回的列表中存储的是所有符合规律的
print(b)
#['xyxy']

可以得到dnot是一个占位的符号

"*"的用法:

import re
#from re import findsll
s = 'hhhhxyxy'
a = re.findall('x*',s)
print(a)
#['', '', '', '', 'x', '', 'x', '', '']

*表答的是前面的元素出现0次或者多次所以

"?"的用法:

import re
#from re import findsll
s = 'hhhhxyxy'
a = re.findall('h?',s)
print(a)
#['h', 'h', 'h', 'h', '', '', '', '', '']

?是匹配前面的字符一次或者0次

"{ }"的用法

import re
#from re import findsll
s = 'hhhhxyxy'
a = re.findall('h{2}',s)
print(a)
#['hh', 'hh']

可以控制匹配h的数量
举个例子:

import re
#from re import findsll
s = '123hhh456'
a = re.findall('1.{3}',s)
print(a)
#['123h']

匹配的是1后面占位的3个符号

".?","(.?)",".*"的用法:

import re
#from re import findsll
s = 'aaaxxabcdxxxxasdsxxaxxdasxxaaa'
a = re.findall('xx.*xx',s)#贪心的匹配尽可能匹配的长但是数量少
b = re.findall('xx(.*?)xx',s)#不贪心少儿多‘()’返回的是括号里的
c = re.findall('xx.*?xx',s)#不贪心
print(a)
print(b)
print(c)
#print(a):['xxabcdxxxxasdsxxaxxdasxx']
#print(b)['abcd', 'asds', 'das']
#print(c)['xxabcdxx', 'xxasdsxx', 'xxdasxx']

re.S的用法:

import re
#from re import findsll
s = '''aaaxxabcdxxxxasdsxxaxxdasxxaaaxx
asdxxasdasd'''
a = re.findall('xx(.*?)xx',s)
b = re.findall('xx(.*?)xx',s,re.S)
print(a)
print(b)
#['abcd', 'asds', 'das']
#['abcd', 'asds', 'das', '\nasd']

可以看出re.S将"."的匹配范围扩大到了换行符。原来的"."号是没有换行符的

search的用法:

import re
#from re import findsll
s = 'aaaxxabcdxxxxasdsxxaxxdasxxaaaxx'
a = re.search('xx(.*?)xx',s).group(1)
print(a)
#abcd

search的group(1)表示的是第一个括号里的内容
如果有多个括号贼为多个括号里的内容

findall返回值:

import re
#from re import findsll
s = 'aaaxxabcdxxxxasdsxxaxxdasxxaaaxx'
a = re.findall('xx(.*?)xxxx(.*?)xx',s)
print(a[0][1])
#asds

可以看出来a为一个list而如果每一个list的元素中有多个"()"则每一个list的元素为
一个tuple

sub的用法:

import re
#from re import findsll
s = '123aaa123123xxx123'
a = re.sub('123.*123','hello',s)

print(a)
#hello

sub 返回的是一个字符串,并且是将原文匹配的所有改变之后的字符串
sub是将匹配的部分改变并且拼接起来

import re
#from re import findsll
s = '123aaa123123xxx123'
a = re.sub('123.*?123','hello',s)
b = re.sub('123.*123','hello',s)
print(b)#hello
print(a)#hellohello

由于.是贪婪匹配所以匹配的是整体字符串123aaa123123xxx123 替换成hello
而.
?是非贪婪所以匹配出两个并且拼接hellohello

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/nevtzttx.html