正则表达式 re模块findall()关于括号的疑问

正则表达式( Regular expression)是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子。
https://docs.python.org/3/library/re.html
中文教程1
在线的测试https://regex101.com/r/DOc5Nu/1

中文教程2
正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)
语法:
1
findall(pattern, string, flags=0)

import re

Python 正则表达式 re findall 方法能够以列表的形式返回能匹配的子串

# print (help(re.findall))
# print (dir(re.findall))

findall()关于括号的疑问

https://www.cnblogs.com/one-lightyear/p/6814833.html
https://blog.csdn.net/cashey1991/article/details/8875213

>>> import re
>>> s = "adfad asdfasdf asdfas asdfawef asd adsfas "
 
>>> reObj1 = re.compile('((\w+)\s+\w+)')
>>> reObj1.findall(s)
[('adfad asdfasdf', 'adfad'), ('asdfas asdfawef', 'asdfas'), ('asd adsfas', 'asd')]
 
>>> reObj2 = re.compile('(\w+)\s+\w+')
>>> reObj2.findall(s)
['adfad', 'asdfas', 'asd']
 
>>> reObj3 = re.compile('\w+\s+\w+')
>>> reObj3.findall(s)
['adfad asdfasdf', 'asdfas asdfawef', 'asd adsfas']

按以上代码例子讲解:

findall函数返回的总是正则表达式在字符串中所有匹配结果的列表,此处主要讨论列表中“结果”的展现方式,即findall中返回列表中每个元素包含的信息。

@1.当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。

@2.当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。

@3.当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。


版权声明:本文为CSDN博主「开水」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cashey1991/article/details/8875213

re.split

https://stackoverflow.com/questions/7501609/python-re-split-vs-split
PYTHON的RE模块理解(RE.COMPILE、RE.MATCH、RE.SEARCH)
可以使用re.split来分割字符串,如:re.split(r'\s+', text);将字符串按空格分割成一个单词列表。

原型:
re.split(pattern, string, maxsplit=0)

通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数,maxsplit=1分离一次,默认为0,不限制次数。

例如:

re.split(‘\W+’, ‘Words, words, words.’)
[‘Words’, ‘words’, ‘words’, ”]

如果字符串不能匹配,将会返回整个字符串的list。

re.split(“a”,”bbb”)
[‘bbb’]

https://www.crifan.com/python_re_search_vs_re_findall/
https://zhuanlan.zhihu.com/p/37900841

Python中re(正则表达式)模块学习
Python3正则匹配re.split,re.finditer及re.findall函数用法详解

你可能感兴趣的:(正则表达式 re模块findall()关于括号的疑问)