python正则表达式group用法_Python 正则表达式中的group参数使用

Python正则表达式re模块中有个group参数,刚开始看的时候没理解,自己摸索了一下,终于知道是啥意思了,记录一下。

先看一下教程中对这个参数的说明:

python正则表达式group用法_Python 正则表达式中的group参数使用_第1张图片

老实讲,看了这个描述我也没懂是啥意思,于是在PyCharm中试了下,才知道是啥意思,先看下代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import re

def dirp(iter): # 定义函数dirp

return [i for i in dir(iter) if not i.startswith('_')] # 将dir(iter)的值中过滤掉前面带_的数据后,赋值给变量i,然后将i的值赋值给dirp函数

# 定义一个变量a,并将字符串“name”赋值给变量a,字符串前面加个r是告诉编译器这个string是个raw string,不要转意

a = r"name"

# print(dirp(re))

# 定义一个变量match

match = re.search(a, "my name is sam,what is you name?")

if match:

print(match.group()) # 在字符串“my name is sam,what is you name?”中搜索“name”,如果存在就打印出来

print(match.start()) # 如果有就打印该字符的开始位置,字符串“my name is sam,what is you name?”的m是第0位

print(match.end()) # 打印字符串的结束位置

print(match.span()) # 打印字符串的开始位置和结束位置

print(type(match.group)) # 打印match.group()的类型

www = r"www.cnblogs.com"

print(re.match(r"(www).(cnblogs).(com)", www).group()) # 打印全部匹配结果,注意每个括号匹配值必须接上一个括号,否则会报错

print(re.match(r"(www).(cnblogs).(com)", www).group(1)) # 打印第一个括号中的匹配结果

print(re.match(r"(www).(cnblogs).(com)", www).group(2)) # 打印第二个括号中的匹配结果

print(re.match(r"(www).(cnblogs).(com)", www).group(3)) # 打印第三个括号中的匹配结果

print(re.match(r"(www).cnblogs.(com)", www).group(2)) # 打印第二个括号中的匹配结果

print(re.match(r"(www).(cnblogs).(com)", www).groups()) # 打印所有括号的匹配结果,但是返回的结果是一个元组

line = "Cars are smarter than dog."

matchObj = re.match(r'(.*) are (.*?) .*', line, re.M | re.I)

if matchObj:

print("matchObj.group(): ", matchObj.group())

print("matchObj.group(1): ", matchObj.group(1))

print("matchObj.group(2): ", matchObj.group(2))

else:

print("No match!!")

执行后查看输出结果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe C:\Users\Administrator\Desktop\mypython\re_test.py

name

3

7

(3, 7)

www.cnblogs.com

www

cnblogs

com

com

('www', 'cnblogs', 'com')

matchObj.group(): Cars are smarter than dog.

matchObj.group(1): Cars

matchObj.group(2): smarter

进程已结束,退出代码0

从结果中可以看出来,group这个参数的意思就是给出多个匹配值,然后在字符串中进行匹配,然后输出对应的匹配结果,group(),这个()中的数字按从左往右的顺序1,2....进行排列(注意只有用()括起来的匹配值才算),然后还要注意就是每个匹配值之间要能接上,比如匹配值写成下面这样的话就会报错,因为匹配值之间少了个点,匹配的值就接不上:

"(www)(cnblogs)(com)"

你可能感兴趣的:(python正则表达式group用法_Python 正则表达式中的group参数使用)