写作时间:2018/12/17

作者:永远的码农(博客园)




一.正则表达式简介:

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

 二.python正则表达式中的特殊字符以及转义字符的用法

     特殊字符                                                      描述                                                     
      ^ 表示匹配的字符必须在最前面
      $ 与^类似,匹配最末的字符
      * 匹配*前面的字符0次或n次
      + 匹配+前面的字符1次或n次
      ? 匹配?前面的字符0次或1次
      . 匹配除了\n外的所有字符
     (x) 匹配x并且记录匹配的值
     x|y 匹配x或者y
     {n} n是正整数,匹配前面的n个字符
     {n,} 匹配前面至少n个字符
     {n,m} 匹配前面至少n个至多m个字符
     [xyz] 匹配列表中列出的任一字符,可以用连字符 - 指出字符范围
     [b] 匹配一个空格
     b 匹配一个单词的分界线,比如一个空格
     B 匹配一个单词的非分界线
   转义字符                                                     描述                             
    \d 匹配数字,即0-9
    \D 匹配非数字
    \s 匹配空白,比如空格,tab
    \S 匹配非空白
    \w 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
    \W 匹配特殊字符,即非字母、非数字、非汉字、非_

 

 

 

 

 

初级正则表达式常见使用:

1.匹配有效的正整数

 正则表达式:  [1-9]+[0-9]*

典例: 找出一个文本文件中所有有效的正整数(00123这样的视为无效,12300视为有效)

先创建一个文本文件new.txt,内容如下:

aaddccbbee 0012300 45600 78909
abcd1234efgh 12340 ghijkl
12 34 056 780 0099
12340056aabbcc00
 import re
file = open("new.txt")
for line in file:
list = re.findall("[1-9]+[0-9]*",line)
print("findall()返回列表为:",list)
for num in list:
print(num)
执行结果:
findall()返回列表为: ['', '', '']
12300
45600
78909
findall()返回列表为: ['', '']
1234
12340
findall()返回列表为: ['', '', '', '', '']
12
34
56
780
99
findall()返回列表为: ['']
12340056

2.匹配有效的负整数

正则表达式: -[1-9]+[0-9]*

3.匹配有效的整数

正则表达式: -?[1-9]+[0-9]*|0

4.匹配浮点数

正则表达式: -?[0-9]+\.[0-9]+

典例: 找出文本文件new.txt中的所有浮点数

文本文件内容如下:

aaddccbbee 456 078 -7780 9.99654
abcd1234efgh -12340 ghijkl 33.0
12 -34 056 780 0099 -2 0 2.23 -3.8
12340056aabbcc0.123
 import re
file = open("new.txt")
for line in file:
list = re.findall("-?[0-9]+\.[0-9]+",line)
print("findall()返回列表为:",list)
for num in list:
print(num)
执行结果:
findall()返回列表为: ['9.99654']
9.99654
findall()返回列表为: ['33.0']
33.0
findall()返回列表为: ['2.23', '-3.8']
2.23
-3.8
findall()返回列表为: ['0.123']
0.123

5.匹配由数字、26个英文字母组成的字符串

正则表达式: [0-9a-zA-Z]+

高级正则表达式常见使用:

1.输入用户名只能是汉字,且字数位于3~10之间

正则表达式: ^[\u4e00-\u9fa5]{3,10}$

典例:验证用户输入名是否满足如上要求

 import re
input = input("请输入用户名:")
if re.match("^[\u4e00-\u9fa5]{0,}$",input):
print("用户名有效")
else:
print("用户名无效")
测试效果:
请输入用户名:王老二
用户名有效
请输入用户名:张三
用户名无效
请输入用户名:lyj来了喔
用户名无效

2.输入密码开头必须是英文字母,其他部分只能是数字,下划线_或字母,且长度为6~12位

正则表达式: [a-zA-Z]{1}[a-zA-Z0-9_]{5,11}

3.电子邮箱验证

正则表达式: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

 正则表达式并不是唯一的,不同的正则表达式可以达到相同的匹配要求......

若您觉得对您有帮助,不妨点个赞

python初学者日记02(正则表达式)的更多相关文章

  1. python初学者日记01(字符串操作方法)

    时间:2018/12/16 作者:永远的码农(博客园) 环境: win10,pycharm2018,python3.7.1 1.1  基础操作(交互输入输出) input = input(" ...

  2. Python学习日记之正则表达式re模块

    用在线网页测试正则表达式时,JavaScript不支持 零宽度正回顾后发断言 (?<=exp)测试时一直匹配失败 但re模块是支持 (?<=exp) 的 终于脱坑

  3. python学习日记(正则表达式)

    定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...

  4. python字符串转义与正则表达式特殊字符转义

    最近在自学python,字符串和正则表达式的特殊字符转义有点混淆,做个笔记简单总结一下. 1.普通字符串转义 在字符串中使用特殊字符时,要用反斜杠(\)转义字符.例如:'Let\'s go!',这里对 ...

  5. python爬虫之re正则表达式库

    python爬虫之re正则表达式库 正则表达式是用来简洁表达一组字符串的表达式. 编译:将符合正则表达式语法的字符串转换成正则表达式特征 操作符 说明 实例 . 表示任何单个字符 [ ] 字符集,对单 ...

  6. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  7. python 初学者

    明确学习目标,不急于求成 当下是一个喧嚣.浮躁的时代.我们总是被生活中大量涌现的热点所吸引,几乎没有深度阅读和思考的时间和机会.我始终认为,学习是需要沉下心来慢慢钻研的,是长 期的:同时,学习不应该被 ...

  8. Python初学者之网络爬虫(二)

    声明:本文内容和涉及到的代码仅限于个人学习,任何人不得作为商业用途.转载请附上此文章地址 本篇文章Python初学者之网络爬虫的继续,最新代码已提交到https://github.com/octans ...

  9. Python标准库01 正则表达式(re包)

    python正则表达式基础 简单介绍 正则表达式并不是python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大 ...

随机推荐

  1. VS code 自定义快捷输入

    本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 位置 ctrl+shift+p 搜索: snippets 输入类型: 比如 ...

  2. apk下载安装,存储的位置,路径

    PackageInstaller 原理简述 应用安装是智能机的主要特点,即用户可以把各种应用(如游戏等)安装到手机上,并可以对其进行卸载等管理操作.APK是Android Package的缩写,即An ...

  3. androidwebview timeout

    public class MyWebViewClient extends WebViewClient { boolean timeout; public MyWebView() { timeout = ...

  4. SpringMVC学习(四)——处理器Handler的各种常用实现

    代码:http://files.cnblogs.com/files/douJiangYouTiao888/MultiActionController.zip 在使用springMVC的开发过程中,Ha ...

  5. 并发包Semaphore实现信号灯

    /** * * @描述: Semaphore实现信号灯 . * Semaphore可以维护当前访问自身的线程个数,并提供了同步机制,使用Semaphore可以控制同时访问资源的线程个数,例如实现一个文 ...

  6. SQL Server ->> Online Index Rebuilding(联机索引重建)

    SQL Server的Enterprise Edition是支持联机索引重建的.那么联机索引重建是怎么工作的以及对我们的查询有什么影响呢? 既然是联机,SQL Server保持了现有索引对于用户的可用 ...

  7. C#中的多线程 - 同步基础 z

    原文:http://www.albahari.com/threading/part2.aspx 专题:C#中的多线程 1同步概要Permalink 在第 1 部分:基础知识中,我们描述了如何在线程上启 ...

  8. ZT 骆家辉宣布辞职 他给中国带来什么留下什么?

    骆家辉宣布辞职 他给中国带来什么留下什么? 字号|2013年11月20日 15:20    已有1933人阅读    57 导 读 美国驻华大使骆家辉20日上午发表声明,宣布辞职.骆家辉履任期间为中国 ...

  9. 绕过安全狗等一些WAF收集

    绕过安全狗sql注入 http://demo.74cms.com/plus/ajax_common.php?act=hotwordquery=錦union+select+1,group_concat% ...

  10. 用npm-run自动化任务(转)

    自动构建JavaScript有不少好工具.不过其实很少有人知道,npm run命令就能很好地完成这一任务,配置起来也很简单. script npm会在项目的package.json文件中寻找scrip ...