本文仅仅展现了python正则表达式中的一小部分内容,但是包含了实际应用中非常被频繁使用的例子,本文重在举例,即不需要相关语法知识就能够会用~

目录

  • re.match()
  • re.findall()
    • 匹配两个字符串之间的字符串并返回
    • 匹配某字符串之前/之后的所有字符串
    • 提取数字
      • 提取所有数字(包括小数)
      • 提取形如“字符串+数字”中的数字

re.match()

re.match() 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

参数

  • pattern:匹配的正则表达式
  • string:要匹配的字符串。
  • flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

我们可以使用group(num)groups()匹配对象函数来获取匹配表达式。

用span来获取匹配到的位置

import re
print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配 用span来获取匹配到的位置
print(re.match('com', 'www.runoob.com'))         # 不在起始位置匹配

out:

(0, 3)
None

再来看一下group的作用:

re.findall()

注意: match 和 search 是匹配一次 findall 匹配所有。

匹配两个字符串之间的字符串并返回

# 这种有两种方法
# 连同匹配条件(前后的字符串)一起返回
re.findall('prop.*?no', 'seed0prop0.2no1.pickle')
# 只返回中间字符串的内容
re.findall("prop(.*)no", 'seed0prop0.2no1.pickle')

out:

匹配某字符串之前/之后的所有字符串

# 这种有两种方法
# 返回prop之后的所有字符
re.findall('prop(.*)', 'seed0prop0.2no1.pickle')
# 返回prop之前的所有字符
re.findall("(.*)prop", 'seed0prop0.2no1.pickle')

out:

提取数字

提取所有数字(包括小数)

string = "Purchase100-0.76-0.63"
re.findall(r"\d+\.?\d*",string)

out:

['100', '0.76', '0.63']

提取形如“字符串+数字”中的数字

例如,要提取 Purchase100 后面的 100

string = "Purchase100-0.76-0.63"
re.findall(r'(?<=Purchase)\d+\.?\d*',string)
# 也可以这样操作
pattern = re.compile(r'(?<=Purchase)\d+\.?\d*')
pattern.findall(string)

out:

['100']


如果想要跟着 “purchase” 一块返回,可以这样:

string = "Purchase100-0.76-0.63"
re.findall(r'(?:Purchase)\d+\.?\d*',string)

out:

['Purchase100']

特殊字符有:
.
(点) 在默认模式,匹配除了换行的任意字符。如果指定了标签 DOTALL ,它将匹配包括换行符的任意字符。

^
(插入符号) 匹配字符串的开头, 并且在 MULTILINE 模式也匹配换行后的首个符号。

$
匹配字符串尾或者在字符串尾的换行符的前一个字符,在 MULTILINE 模式下也会匹配换行符之前的文本。 foo 匹配 ‘foo’ 和 ‘foobar’,但正则表达式 foo$ 只匹配 ‘foo’。 更有趣的是,在 ‘foo1\nfoo2\n’ 中搜索 foo.$,通常匹配 ‘foo2’,但在 MULTILINE 模式下可以匹配到 ‘foo1’;在 ‘foo\n’ 中搜索 $ 会找到两个(空的)匹配:一个在换行符之前,一个在字符串的末尾。

*
对它前面的正则式匹配0到任意次重复, 尽量多的匹配字符串。 ab* 会匹配 ‘a’,‘ab’,或者 ‘a’ 后面跟随任意个 ‘b’。

+
对它前面的正则式匹配1到任意次重复。 ab+ 会匹配 ‘a’ 后面跟随1个以上到任意个 ‘b’,它不会匹配 ‘a’。

?
对它前面的正则式匹配0到1次重复。 ab? 会匹配 ‘a’ 或者 ‘ab’。

*?, +?, ??

'*', '+',和 '?'修饰符都是 贪婪的;
它们在字符串进行尽可能多的匹配。
有时候并不需要这种行为。
如果正则式 <.*> 希望找到 '<a> b <c>',它将会匹配整个字符串,而不仅是 '<a>'。
在修饰符之后添加 ? 将使样式以 非贪婪`方式或者 :dfn:`最小 方式进行匹配;
尽量 少 的字符将会被匹配。
使用正则式 <.*?> 将会仅仅匹配 '<a>'。

参考:
https://www.runoob.com/python/python-reg-expressions.html
https://blog.csdn.net/u010412858/article/details/83062200

【python】常见的正则表达式用法;匹配字符串相关推荐

  1. python怎么匹配字符串_python正则表达式如何匹配字符串

    python正则表达式匹配字符串的方法:1.使用[(.+?)]这个正则表达式来提取单个位置的字符串:2.使用[(?P-)]这个正则表达式[匹配连续多个位置的字符串. python正则表达式匹配字符串的 ...

  2. python子串匹配_Python正则表达式如何匹配子串

    Python正则表达式有很多的时候需要我们进行子串的匹配,不单在进行替换的时候需要进行,在很多的地方都会用到这些代码.下面我们就来详细的学习如何用Python正则表达式获取自己想得到的匹配子串. 获取 ...

  3. python 正则表达式判断_正则表达式教程python | Python如何判断正则表达式是否匹配成功...

    python 正则表达式 关于 和*的问题 正则表达式教程里在python的帮助里有.,仔细的看一次后找一个正则表达式验证工具.其中有一个就是python写的.多试几次. 正则表达式挺难掌握,掌握后又 ...

  4. java正则表达式匹配字符串_java正则表达式如何匹配字符串

    java正则表达式匹配字符串的方法:使用tostring,代码为[while(matcher.find()){tmp.add(matcher.group(1).toString());}]. java ...

  5. python如何打出英文括号_用python的re(正则表达式)模块匹配英文环境下的括号

    在用re(正则表达式)模块匹配掉文本中的括号时,总是出现各种各样的问题,经过将近一个小时的摸索,终于找到了问题的所在. 案例: 将 txt = 'Linux系统安装 - 1.1(Av20994127, ...

  6. python实现Trie 树+朴素匹配字符串+RK算法匹配字符串+kmp算法匹配字符串

    一.trie树应用: 相应leetcode 常用于搜索提示,如当输入一个网址,可以自动搜索出可能的选择.当没有完全匹配的搜索结果,可以返回前缀最相似的可能. 例如三个单词app, apple, add ...

  7. java 正则 最后一个字符_正则表达式怎么匹配字符串中最后一串数字?

    展开全部 importre temp='DwellTime:666' m=re.search(r'\d*',temp) printrepr(m.group()),m.start(),m.end() m ...

  8. 正则表达式记录,匹配字符串中第3个空格和第4个空格中间的字符

    获取字符串中第3个空格和第4个空格中间的字符(非定长分隔符字符串数据截取) pattern = "^(?:\S+\s){3}(\S+)\s" # 注意,\s也代表换行符等 impo ...

  9. python匹配数字开头的内容_python使用正则表达式匹配字符串开头并打印示例

    python 正则表达式,怎样匹配以某个字符串开头,以str ="abcdefg123213qwe" 比如要匹配以abc开头,以qwe结尾,要怎样写呢?匹配以某个字符串开头,以某个 ...

最新文章

  1. 计算机二级申请创新学分理由,创新学分申请书范文
  2. springboot:映射静态资源路径
  3. HTML5能做哪些东西呢?这篇文章给你答案
  4. C++一天一个程序(七)
  5. VLAN与子网划分区别
  6. 替换string中的部分字符
  7. [转载]jQuery1.6.1源码分析系列
  8. springboot 整合 mvc 配置外部静态资源
  9. python爬虫百度文库_百度文库爬虫,Python爬取百度文库内容输出word文档low版
  10. H3CIERS+(H3C认证路由交换互联网专家介绍)
  11. 如何使用n2disk构建一个100 Gbit(无丢包)连续数据包记录器[Part3]
  12. RCTF crypto100(1)
  13. 配置Eureka-client报EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT...
  14. java IO流基础 万字详解(从拷贝文件到模拟上传头像)
  15. 使用Python简单地去辅助百万答题
  16. CAP定理,分布式系统
  17. 项目管理系统Cynthia
  18. 解决:interface conversion: interface {} is float64, not int
  19. SQL为什么动不动就百行以K记?
  20. 学习软件测试要掌握什么基本知识?

热门文章

  1. 支付宝集分宝接口开发的相关问题解答
  2. 怎么在html页面中加入图片不显示,html – 如何在网页上显示本地图片?
  3. .doc文件转换为.docx文件
  4. 防火墙配置(CiscoPTGNS3)
  5. project 2013 设置工期为1个工作日,但开始时间与结束时间不是同一天
  6. 【设计模式】 - 创建者模式 - 工厂方法模式、抽象工程模式
  7. Unity 5.3中的GGX着色器
  8. 背后的力量 | 推动政府数字化建设 华云数据为潜江市生态环境局搭建新一代企业级云平台
  9. 八、INPUT子系统和内核自带的GPIO按键驱动
  10. 瑞星RAC-1350行为管理设备体验