Python中如何使用正则表达式?
string “[123]…(abc)”
需要将“ 123 ”提取到 key1,"abc"提取到 key2,(?<key1>)方式
问题是
[] 和 () 出现的顺序不确定,也可能是
string “(abc)…[123]”
能否一条正则搞定?
Python中如何使用正则表达式?
8 回复
“[(?P<key1>[0-9]+)].+((?P<key2>[a-z]+))”
正则表达式在Python里用re模块,最常用的几个函数是:
re.search()- 在字符串中搜索第一个匹配
import re
text = "我的电话是123-456-7890"
match = re.search(r'\d{3}-\d{3}-\d{4}', text)
if match:
print(f"找到电话: {match.group()}")
re.findall()- 找到所有匹配并返回列表
import re
text = "价格:$10, $20, $30"
prices = re.findall(r'\$\d+', text)
print(prices) # ['$10', '$20', '$30']
re.sub()- 替换匹配的文本
import re
text = "今天是2023-12-25"
new_text = re.sub(r'\d{4}-\d{2}-\d{2}', "XXXX-XX-XX", text)
print(new_text) # 今天是XXXX-XX-XX
re.compile()- 预编译正则表达式(重复使用时效率更高)
import re
pattern = re.compile(r'\b\w+\b') # 匹配单词
text = "Hello World"
words = pattern.findall(text)
print(words) # ['Hello', 'World']
常用模式:
\d匹配数字\w匹配字母数字下划线\s匹配空白字符.匹配任意字符(除了换行)*0次或多次+1次或多次?0次或1次{n}恰好n次{n,m}n到m次
示例:验证邮箱格式
import re
email = "user@example.com"
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
if re.match(pattern, email):
print("邮箱格式正确")
建议: 用r''原始字符串写正则,避免转义问题。
你应该没看完问题
会不会有嵌套的情况呢?
正则我要提取或者替换的的文本中既有双引号也有单引号,那我概括选中这段文本时是不是要用三引号??
你干吗不自己发个帖问啊?
不需要,用转义就可以了,’ or " 视乎外面用哪个
可以的
(?=.?([.+?]))(?=.?((.+?))).+?

