findall方法
re.findall() 方法是 re 模块中一个强大的功能,它用于从字符串中匹配所有符合正则表达式的子串,并返回一个列表。下面是对 re.findall() 方法的详细解释及一些使用示例。
re.findall(pattern, string, flags=0)
pattern:要匹配的正则表达式
string:要匹配的字符串
flags:可选参数,用于控制匹配方式,比如是否区分大小写等
re.findall() 方法返回的列表包含了所有符合正则表达式 pattern 的非重叠匹配项,如果没有到匹配项,则返回一个空列表。
下面是一些使用 re.findall() 方法的示例:
示例一:
```
import re
# 匹配字符串中的所有数字
string = "apple book 1234, banana 5678, 9999 cherry"
result = re.findall(r'\d+', string)
print(result)
# Output: ['1234', '5678', '9999']
# 匹配字符串中的所有单词
string = "Hello, world! This is a test string."
result = re.findall(r'\w+', string)
print(result)
# Output: ['Hello', 'world', 'This', 'is', 'a', 'test', 'string']
# 匹配字符串中的所有邮箱地址
string = "My email is ***************. Please contact me!"
result = re.findall(r'\w+@\w+\.\w+', string)
print(result)
# Output: ['***************']
```
示例二:
```
import re
# 匹配字符串中的所有句子
string = "This is the first sentence. This is the second sentence. This is the third sentence."
result = re.findall(r'[^.!?]+[.!?]', string)
print(result)
# Output: ['This is the first sentence.', ' This is the second sentence.', ' This is the third sentence.']
# 匹配字符串中的所有电话号码
string = "My phone number is 123-456-7890. Please call me!"
result = re.findall(r'\d{3}-\d{3}-\d{4}', string)
print(result)
# Output: ['123-456-7890']
```
示例三:
```
import re
# 匹配字符串中的所有日期
string = "Today is 2022-01-01. Tomorrow is 2022-01-02."
正则表达式提取中文字符result = re.findall(r'\d{4}-\d{2}-\d{2}', string)
print(result)
# Output: ['2022-01-01', '2022-01-02']
# 匹配字符串中的所有中文字符
string = "这是一段中文字符。This is an English sentence."
result = re.findall(r'[\u4e00-\u9fa5]+', string)
print(result)
# Output: ['这是一段中文字符']
```
re.findall() 方法非常灵活,可以根据不同的需求进行各种匹配操作。需要注意的是,re.findall() 方法只能匹配字符串中的非重叠子串,如果想匹配重叠子串,则需要使用 re.finditer() 方法。
总结:
re.findall() 方法用于从字符串中匹配符合正则表达式的所有子串,并将它们组成一个列表返回。通过使用不同的正则表达式以及结合其他 re 模块的方法,re.findall() 方法可以用于解决各种文本处理问题,如提取特定的信息、统计字符串中某种模式的个数等。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。