re 正则语法

1. 逗号分割,忽视引号中的逗号

  • r :原始字符串
  • , :以逗号分割
  • \s :匹配空白字符
  • *:匹配前一个字符0次或者无数次,当出现:,,,匹配结果:'',即空字符
  • (?![^"]*\"\,):匹配"AAA",中的逗号,不匹配AAA",中的逗号,在以逗号分割的时候,忽略双引号中的逗号

问题:当字符串尾部也有双引号时,双引号内的逗号会被分割
方法:字符串后面加上,
参考来源:https://www.jianshu.com/p/d5ae083ff35d

a = '2020-03-04, "wuhan, hubei, china", covid-19 raged'
b = re.split(r',\s*(?![^"]*\"\,)', a)
# ['2020-03-04', '"wuhan, hubei, china"', 'covid-19 raged']

2. 提取文本中的数字、英文、中文

  • 0-9:数字
  • A-Za-z:英文
  • \u4e00-\u9fa5:中文
a = '2020年春节时,covid-19开始肆虐'
b = re.sub('[^0-9,.]+', '', a)

c = re.sub('[^\u4e00-\u9fa5]+', '', a)
# 年春节时开始肆虐

3. 提取两个词之间的文本

  • 两个词仅在文本中出现一次
  • 两个词在文本中出现多次,例如LEFT出现2次,希望截取最后一次出现的位置到RIGHT之间的文本
a = '关于江西省航空护林局直升机机场建设项目环境评估报告政府采购项目(采购编号:JXZC2017-03-G008)竞争性谈判公告'
b = re.findall(r'(?<=局).*?(?=采购)', a)
# 直升机机场建设项目环境评估报告政府

a1 = '民航运行管理中心和气象中心工程及情报管理中心工程配套家具采购项目'
b1 = re.findall(r'(?<=工程)((?:(?!工程).)*?)(?=采购)', a1)
# 配套家具

4.提取两个符号之间的文本

re的语法中具有特定的含义,如果希望其作为一般含义的符号使用,需要在前面加上\,即\(\"

a = '$("#pubtime_baidu").html(_formatTime(new Date("2020-08-31 09:59:30").getTime()+600*1000));'
b = re.findall(r'(?<=new Date\(\").*?(?=\"\))', a)
# 2020-08-31 09:59:30
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正则表达式是一种强大的文本匹配工具,Python中使用re模块来支持正则表达式操作。下面是一些常用的正则表达式语法: 1. 字符匹配: - 普通字符:使用普通字符直接匹配,例如 `a` 匹配字符 "a"。 - 元字符:一些特殊字符具有特殊含义,例如 `.` 匹配任意字符,`\d` 匹配数字,`\w` 匹配字母数字下划线等。 - 字符集合:使用方括号 [] 表示字符集合,可以匹配括号内的任意一个字符。例如 `[abc]` 匹配字符 "a"、"b" 或 "c"。 - 反义字符集合:使用 `^` 在字符集合内表示取反。例如 `[^abc]` 匹配除了 "a"、"b"、"c" 之外的任意一个字符。 2. 重复匹配: - `*`:匹配前一个字符的零个或多个重复。例如 `a*` 可以匹配 "a"、"aa"、"aaa" 等。 - `+`:匹配前一个字符的一个或多个重复。例如 `a+` 可以匹配 "a"、"aa"、"aaa" 等。 - `?`:匹配前一个字符的零个或一个重复。例如 `a?` 可以匹配 "a" 或空字符串。 - `{n}`:匹配前一个字符的恰好 n 次重复。例如 `a{3}` 只能匹配 "aaa"。 - `{n,}`:匹配前一个字符的至少 n 次重复。例如 `a{2,}` 匹配 "aa"、"aaa"、"aaaa" 等。 - `{n,m}`:匹配前一个字符的 n 到 m 次重复。例如 `a{2,4}` 匹配 "aa"、"aaa"、"aaaa"。 3. 边界匹配: - `^`:匹配输入字符串的开始位置。 - `$`:匹配输入字符串的结束位置。 - `\b`:匹配单词边界,即单词前后的空格、标点等符号。 4. 分组和捕获: - `()`:用于分组和捕获,可以将多个字符看作一个整体进行匹配。 - `(?:)`:用于非捕获分组,只进行匹配不捕获。 这只是正则表达式语法的一小部分,更多的语法规则和用法可以参考Python官方文档或其他正则表达式教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值