原文作者:小哲,雷锋网

在编程中,经常会涉及到字符串的操作,一个常用的策略就是利用split函数,然后对于特定的字符串进行匹配,但是这种方法格式复杂,可复用性较差。

正则表达式是处理字符串匹配一个必不可少的方法,定义一个语义规则,来进行特定的字符字符串的规则。

正则表达式速查表

1 元字符,用特殊符号表示一类元素

语法 说明 语法示例 匹配字符
. 匹配除换行符以外的任意字符(这是一个小红点儿) a.c abc
\w 匹配字母或数字或下划线 (可以记成 word ) a\wc a2c
\b 匹配一个单词的边界 foo\b 匹配foo,foo. 但不匹配foobar
\B 匹配空字符串,但 不 能在词的开头或者结尾 py\B 匹配python py2 py3, 但不匹配py.
^ 匹配字符串的开始 ^abc abc
\W 匹配非字母数字下划线 a\Wb a b
\d 匹配数字 (可记成 digit ) a\dc a2c
\D 匹配非数字 a\Dc abc
\s 匹配任意的空白符 (可以记成 space ) a\sb a b
\S 匹配非空白符 a\Sb acb
a|b 匹配字符a或字符b。(长的写前面,短的写后面) abc|def abc 或def
() 匹配括号内的表达式,也表示一个组 (abc) abc
[...] 匹配字符组中的字符 a[bcd]e abe 或ace或ade
[^...] 匹配除了字符组中字符的所有字符 a[bcd]e ase

2 字符组 [],限制范围,某个位置只能出现这个范围内的某个元素。

语法 说明 语法示例 匹配字符
[0123456789] 只能匹配0-9数字,可写成[0-9] [0123456789] 0或1或2...
[a-z] 只能匹配小写字母 [a-z] d
[A-Z] 只能匹配大写字母 [A-Z] D
[0-9a-fA-F] 可以匹配16进制的某个数 [0-9a-fA-F] D

3 量词,表示数量,约束前面元字符出现的次数。

语法 说明 语法示例 匹配字符
* 重复前一个字符零次或多次 abc* ab 或abccc
+ 重复前一个字符一次或多次 abc+ abc 或abccc
? 重复前一个字符零次或一次 abc? ab 或abc
{n} 重复前一个字符n次 abc{3} abccc
{n,} 重复前一个字符至少n次 abc{3,} abccccc
{n,m} 重复前一个字符n到m次 abc{1,5} abc或abcc或abccccc

re模块包函数

# 导入包import re
################re.compile() 编译# 将正则表达式编译成一个正则表表达式对象。# 如果一个正则表达式在程序中只用一次,就没必要编译了。# 如果同一个正则表达式要被多次使用时,就需要对表达式进行编译,以便后续使用。例如:匹配www.baidu.compattern = r'w*\.[a-z]{5}\.[a-z]*'prog = re.compile(pattern)string = 'www.baidu.com'result = prog.match(string)# 如果匹配成功返回match对象,不成功返回None
###################re.findall()  返回列表# 一、re.findall(正则表达式,待匹配的字符串,flags=0)# 二、findall默认只显示分组中的,分组有优先级。pattern = r'w{3}\.(baidu|oldboy)\.com'prog = re.compile(pattern)ret = re.findall(prog, 'www.baidu.com')print(ret)# 结果:['baidu']# 三、加上  ?: 取消分组的优先# ret = re.findall('www\.(?:baidu|oldboy)\.com', 'www.baidu.com')# print(ret)# 结果:['www.baidu.com']
###################re.match()#从头匹配re.match(pattern, string, flags=0)#如果 string 开始的0或者多个字符匹配到了正则表达式样式,就返回一个相应的 匹配对象 。如果没有匹配,就返回 None ;#需要group(),才能返回值
###################re.search()#扫描整个 字符串 找到匹配样式的第一个位置,并返回一个相应的 匹配对象。如果没有匹配,就返回一个 None ;注#同样需要group(),才能的返回值
####################re.sub()、re.subn()# re.sub()re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)  # 【表达式表示替换内容,要替换的新元素,替换对象,替换次数】# 结果为:'Baked Beans & Spam'# re.subn()re.subn(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)   # 【返回元组,前面是替换完的结果,后面是替换的次数】结果是('Baked Beans & Spam', 1)

正则只能出现特定字符_python正则表达式的简单使用总结相关推荐

  1. python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符>>> >>> r=re.compile(r'.*') >>> ...

  2. pgsql 筛选中文字符正则_匹配中文字符的正则表达式

    匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一 ...

  3. python正则匹配任意字符_Python 正则表达式 匹配任意字符

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*') >>> ...

  4. python不包含某字符_python正则表达式匹配不包含某几个字符的字符串方法

    python正则表达式匹配不包含某几个字符的字符串方法 一.匹配目标 文件中所有以https?://开头,以.jpg|.png|.jpeg结尾的字符串 二.尝试过程 1) 自然想到正则表达式r'(ht ...

  5. python正则数字重复出现次数_python正则表达式重复次数

    1.如何使用正则表达式检查字符串中重复出现的词 private void button1_Click(object sender, EventArgs e) { System.Text.Regular ...

  6. python正则匹配11个数字_Python正则表达式匹配字符串中的数字

    导读 这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 ...

  7. 在QT的LineEdit框中输入特定字符(正则表达式的使用)

    void MainWindow::on_lineEdit_cursorPositionChanged(int arg1, int arg2) {QRegExp rx("[a-z A-Z 0- ...

  8. 正则表达式——WPF输入控件TextBox 限定输入特定字符

    正则表达式--WPF输入控件TextBox 限定输入特定字符 原文:正则表达式--WPF输入控件TextBox 限定输入特定字符 概念: 正则表达式是对字符串操作的一种逻辑公式, 就是用事先定义好的一 ...

  9. 表示所有字符的正则表达式html,JavaScript正则表达式介绍

    正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模式.搜索模式可用于文本搜索和文本替换. 什么是正则表达式正则表达式,英语:Regular Expression,在代码中常简写为 ...

最新文章

  1. laravel路由无法访问,报404,No query results for model [App\Models\...]
  2. c++ bind和function
  3. 聚焦 | 阿里灵杰AI工程化峰会来了
  4. 程序员基本功08异常捕捉的陷阱
  5. 中如何将方形图片转换成圆形图片_【PS】PS中不可不知的实用技巧!你都掌握了吗?...
  6. 学计算机后悔转专业,大学转专业容易吗 会后悔吗
  7. 一文读懂 Linux 内存分配全过程
  8. 电脑长截图软件_电脑屏幕长截图+WORD文档里没有插入PDF文件选项时怎么办? 简单一招轻松完成...
  9. 2017.3.8 太空飞行计划问题 失败总结
  10. matlab中表示拉普拉斯分布_双导体球在匀强外电场中的空间电场分布
  11. Linux之nc命令
  12. springboot做网站_Github点赞接近10万的SpringBoot学习教程+实战推荐!牛批!
  13. TypeScript学习(二):任意类型及推论
  14. php 所有国家时区,php输出全球各个时区列表
  15. BAT 安装/卸载 .net 服务
  16. 做个坚强的逆行者,献给终日奋斗的你我——《当幸福来敲门》
  17. chrome上字体模糊问题处理
  18. 把多列的迭代次数问题化简为单列问题
  19. java转义字符之换行字符
  20. 【华为云技术分享】风格迁移——让你的照片秒变手绘日漫风,祝大家六一快乐!

热门文章

  1. 华为发布基于第二代英特尔®至强®可扩展处理器家族的新一代服务器
  2. 性能测试在软件测试中的位置,性能测试的响应时间,你真的算对了吗?
  3. pyside2 镜像安装_pyside2 镜像安装_【PySide2学习笔记】0_下载安装
  4. 设置PL/SQL工具SQL窗口的字体大小及颜色
  5. java.lang.UnsatisfiedLinkError: D:\Program Files\apache-tomcat-9.0.30\bin
  6. break continye
  7. c++ 指针拼接字符串_字符串拼接+和concat的区别
  8. c++代码好玩_一行Python代码能干嘛?快来看看吧!有表白利器哦
  9. clientdataset 遍历字段_Delphi TClientDataSet[五]: 读取数据
  10. mclmcrrt77 matlab,mclmcrrt77.dll下载