re

import re

'''
string = '<div>啊哈,给我一杯忘情水,换我一生不伤悲</div></div></div>'
pattern = re.compile(r'<div>(.*?)</div>')

ret = pattern.search(string)

print(ret.group())
'''


'''
string = '<div><span>停车坐爱枫林晚,霜叶红于二月花</span></div>'
pattern = re.compile(r'<(\w+)><(\w+)>.*?</\2></\1>')
# pattern = re.compile(r'<(?P<goudan>\w+)><(?P<maodan>\w+)>.*?</(?P=maodan)></(?P=goudan)>')

ret = pattern.search(string)

print(ret.group())
print(ret.group(1))
print(ret.group(2))
'''

# 测试单行模式
"""
string = '''<div>朝发白帝城
朝辞白帝彩云间
千里江陵一日还
两岸猿声啼不住
轻舟已过万重山
</div>'''
pattern = re.compile(r'<div>(.*?)</div>', re.S)
ret = pattern.search(string)
print(ret.group(1))
"""

# 测试多行模式   ^     $
"""
string = '''歌颂爱
爱是一个字,我只说一次
爱是一道光,如此美妙
爱我还是他,
爱情36计
'''
pattern = re.compile(r'^爱', re.M)
ret = pattern.findall(string)
print(ret)
"""




string = '男生都喜欢20岁的女孩'
# 1.字符串替换
print(string.replace('20', '60'))

# 2.sub
def fn(ret):
	print(ret)
	age = int(ret.group())
	print(age)
	return str(age + 2)

pattern = re.compile(r'\d+')
string = pattern.sub(fn, string)
string = pattern.sub('50', string)
print(string)
# 正则替换
ret = re.sub(pattern, r'<div>"\1"</div>', string)
print(ret)
### Python `re` 模块简介 `re` 是 Python 的内置模块之一,专门用于处理正则表达式。通过该模块,开发者能够实现复杂的字符串匹配、替换以及分割操作。以下是关于 `re` 模块的一些核心知识点: #### 导入模块 要使用 `re` 模块的功能,首先需要将其导入到程序中: ```python import re ``` --- ### 常见函数及其功能 #### 1. `re.compile()` 此函数用于编译正则表达式模式并返回一个模式对象,从而提高性能。 - **参数说明**: - `pattern`: 正则表达式的字符串形式。 - `flags`: 可选标志位,用于控制正则表达式的行为(如忽略大小写)。[^3] 示例代码如下: ```python pattern = r'\d+' # 匹配一个或多个数字 compiled_pattern = re.compile(pattern) result = compiled_pattern.findall('There are 12 apples and 45 oranges.') print(result) # 输出: ['12', '45'] ``` --- #### 2. `re.search()` 搜索整个字符串以找到第一个满足条件的子串,并返回匹配的对象。 示例代码: ```python match = re.search(r'apple', 'I have an apple') if match: print(f"Found '{match.group(0)}'") else: print("Not found") ``` --- #### 3. `re.match()` 仅检查字符串开头是否符合指定的正则表达式模式。 示例代码: ```python match = re.match(r'^\d+', '123abc') # 字符串以数字开头 if match: print(match.group(0)) # 输出: 123 else: print("No match at the beginning of the string.") ``` --- #### 4. `re.sub()` 用于将匹配的部分替换成新的字符串。 示例代码: ```python text = "Call me at 123-456-7890" new_text = re.sub(r'\d{3}-\d{3}-\d{4}', '(XXX)-XXX-XXXX', text) print(new_text) # 输出: Call me at (XXX)-XXX-XXXX ``` --- #### 5. `re.split()` 按照给定的正则表达式分隔字符串。 示例代码: ```python split_result = re.split(r'[,-]', 'John,Doe-Smith') print(split_result) # 输出: ['John', 'Doe', 'Smith'] ``` --- #### 6. `re.findall()` 查找所有符合条件的子串并作为列表返回。 示例代码: ```python matches = re.findall(r'\b[a-zA-Z]+\b', 'Hello world! This is a test.') print(matches) # 输出: ['Hello', 'world', 'This', 'is', 'a', 'test'] ``` --- ### 标志位 (`flags`) 参数详解 `re` 模块支持多种标志位来调整正则表达式的行为,常见的有以下几个: - `re.IGNORECASE`: 忽略字母大小写。 - `re.MULTILINE`: 多行模式下允许 `^` 和 `$` 分别匹配每一行的起始和结束位置。 - `re.DOTALL`: 让 `.` 能够匹配换行符在内的任意字符。 示例代码: ```python # 忽略大小写的匹配 result = re.findall(r'hello', 'Hello World!', flags=re.IGNORECASE) print(result) # 输出: ['Hello'] # 多行模式下的匹配 multiline_string = """First line. Second line.""" result = re.findall(r'^line$', multiline_string, flags=re.MULTILINE | re.IGNORECASE) print(result) # 输出可能为空,具体取决于输入数据结构 ``` --- ### 总结 上述内容涵盖了 `re` 模块的核心概念与主要方法。对于更深入的学习,建议查阅官方文档或其他权威资料进一步探索其高级特性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值