首页 > 编程知识 正文

python正则结尾匹配(python正则匹配括号以及内容)

时间:2023-12-21 10:48:50 阅读:318717 作者:CVNK

本文目录一览:

python 正则表达式,怎样匹配以某个字符串开头,以某个字符串结尾的情况?

匹配以某个字符串开头,以某个字符串结尾的情况的正则表达式:^abc.*?qwe$

Python正则表达式的几种匹配用法:

1.测试正则表达式是否匹配字符串的全部或部分

regex=ur"" #正则表达式

if re.search(regex, subject):

do_something()

else:

do_anotherthing()

2.测试正则表达式是否匹配整个字符串

regex=ur"/Z" #正则表达式末尾以/Z结束

if re.match(regex, subject):

do_something()

else:

do_anotherthing()

3.创建一个匹配对象,然后通过该对象获得匹配细节(Create an object with details about how the regex matches (part of) a string)

regex=ur"" #正则表达式

match = re.search(regex, subject)

if match:

# match start: match.start()

# match end (exclusive): atch.end()

# matched text: match.group()

do_something()

else:

do_anotherthing()  

4.获取正则表达式所匹配的子串(Get the part of a string matched by the regex)

regex=ur"" #正则表达式

match = re.search(regex, subject)

if match:

result = match.group()

else:

result = ""  

5. 获取捕获组所匹配的子串(Get the part of a string matched by a capturing group)

regex=ur"" #正则表达式

match = re.search(regex, subject)

if match:

result = match.group(1)

else:

result = ""  

6. 获取有名组所匹配的子串(Get the part of a string matched by a named group)

regex=ur"" #正则表达式

match = re.search(regex, subject)

if match:

result = match.group"groupname")

else:

result = ""  

7. 将字符串中所有匹配的子串放入数组中(Get an array of all regex matches in a string)

result = re.findall(regex, subject)  

8.遍历所有匹配的子串(Iterate over all matches in a string)

for match in re.finditer(r"(.*?)/s*.*?//1", subject)

# match start: match.start()

# match end (exclusive): atch.end()

# matched text: match.group()  

9.通过正则表达式字符串创建一个正则表达式对象(Create an object to use the same regex for many operations)

reobj = re.compile(regex)  

10.用法1的正则表达式对象版本(use regex object for if/else branch whether (part of) a string can be matched)

reobj = re.compile(regex)

if reobj.search(subject):

do_something()

else:

do_anotherthing()  

11.用法2的正则表达式对象版本(use regex object for if/else branch whether a string can be matched entirely)

reobj = re.compile(r"/Z") #正则表达式末尾以/Z 结束

if reobj.match(subject):

do_something()

else:

do_anotherthing()

12.创建一个正则表达式对象,然后通过该对象获得匹配细节(Create an object with details about how the regex object matches (part of) a string)

reobj = re.compile(regex)

match = reobj.search(subject)

if match:

# match start: match.start()

# match end (exclusive): atch.end()

# matched text: match.group()

do_something()

else:

do_anotherthing()  

13.用正则表达式对象获取匹配子串(Use regex object to get the part of a string matched by the regex)

reobj = re.compile(regex)

match = reobj.search(subject)

if match:

result = match.group()

else:

result = ""  

14.用正则表达式对象获取捕获组所匹配的子串(Use regex object to get the part of a string matched by a capturing group)

reobj = re.compile(regex)

match = reobj.search(subject)

if match:

result = match.group(1)

else:

result = ""  

15.用正则表达式对象获取有名组所匹配的子串(Use regex object to get the part of a string matched by a named group)

reobj = re.compile(regex)

match = reobj.search(subject)

if match:

result = match.group("groupname")

else:

result = ""  

16.用正则表达式对象获取所有匹配子串并放入数组(Use regex object to get an array of all regex matches in a string)

reobj = re.compile(regex)

result = reobj.findall(subject)  

17.通过正则表达式对象遍历所有匹配子串(Use regex object to iterate over all matches in a string)

reobj = re.compile(regex)

for match in reobj.finditer(subject):

# match start: match.start()

# match end (exclusive): match.end()

# matched text: match.group()  

python 正则如何从末尾匹配

c=re.match('.*?([0-9]+)$', xyz)

print c.group(1)

把不需要的匹配去掉就可以了

python的正则表达式

1,正则表达式的一些内容

        正则表达式主要是用来匹配文本中需要查找的内容,例如在一片文章中找出电话号码,就中国的来说11位纯数字(不说座机),则使用"d{11}" 意味匹配数字11次,就能准确的查找出文本中的电话号码. 还有就是在编写网络爬虫的时候需要提取很多超链接再次进行爬取,使用正则表达式就很方便.直接匹配http开头就行,当然也可以使用beautifulsoup的select方法.

看下面的程序看看正则表达提取文本中的邮箱:

w 匹配字母,数字,下划线 

+ 匹配1次或者多次

re是正则表达式的工具包,工具包出错的话在anaconda的命令行输入"pip install re"安装,其他的工具包也是如此.

re.compile()中的r示意不是转义字符,也就是保持后面字符串原样,findall返回一个列表.下面还有一个版本的程序略有不同.

compile的另一个参数re.IGONORECASE(忽略大小写),还可以是re.DORALL,多行模式,具体功能也是模糊不清,不过在使用通配符 . 匹配的时候加上re.DOTALL参数能够匹配换行.如果希望忽略大小写和多行模式都开启可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .

表达式使用( ),对匹配到的内容分为3组 也就是(w+)出现字母,数字,下划线一次或多次,这个分组就是下面使用match对象的grou()方法的时候的参数.不给参数和参数0都是得到整个匹配到的内容,  参数1得到第一个括号匹配到的内容,以此类推参数2和3,如果没有括号分组的话使用参数会出现错误.

search( )查找和正则式匹配的内容,只匹一次后面的那个找不到.返回一个match对象

w 匹配字母,数字,下划线

W 匹配字母,数字.下划线之外的所有字符

d 匹配数字

D 匹配非数字

s 匹配空格,制表符,换行符

S匹配除空格制表符,换行符之外的其他字符

[ .... ]定义自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配单词.

{最少次数,最多次数},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默认为匹配最多次数(贪心匹配),非贪心模式在后面加上问号 

?  可选 0次或者1次吧  

+匹配1次或多次

*匹配0次或者多次

^ 判断开头 ^d 如果待匹配串是数字开头则返回第一个数字

$判断结尾  d$  如果待匹配串是数字结尾则返回最后一个数字

.   通配符,匹配除换行之外的所有字符

   d{11}  匹配数字11次

    . * 匹配所有字符除 换行

[a-zA-Z0-9._%+-]  小写和大写字母、数字、句点、下划线、百分号、加号或短横

[a-zA-Z]{2,4} 匹配字母 2 - 4次

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。