Python中如何使用正则表达式?

string “[123]…(abc)”
需要将“ 123 ”提取到 key1,"abc"提取到 key2,(?<key1>)方式

问题是
[] 和 () 出现的顺序不确定,也可能是
string “(abc)…[123]”

能否一条正则搞定?
Python中如何使用正则表达式?

8 回复

“[(?P<key1>[0-9]+)].+((?P<key2>[a-z]+))”


正则表达式在Python里用re模块,最常用的几个函数是:

  1. 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()}")
  1. re.findall() - 找到所有匹配并返回列表
import re
text = "价格:$10, $20, $30"
prices = re.findall(r'\$\d+', text)
print(prices)  # ['$10', '$20', '$30']
  1. 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
  1. 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 " 视乎外面用哪个

可以的

(?=.?([.+?]))(?=.?((.+?))).+?

回到顶部