python初学者日记02(正则表达式)

写作时间: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
1 import re
2 file = open("new.txt")
3 for line in file:
4     list = re.findall("[1-9]+[0-9]*",line)
5     print("findall()返回列表为:",list)
6     for num in list:
7         print(num)
执行结果:
findall()返回列表为: [‘12300‘, ‘45600‘, ‘78909‘]
12300
45600
78909
findall()返回列表为: [‘1234‘, ‘12340‘]
1234
12340
findall()返回列表为: [‘12‘, ‘34‘, ‘56‘, ‘780‘, ‘99‘]
12
34
56
780
99
findall()返回列表为: [‘12340056‘]
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
1 import re
2 file = open("new.txt")
3 for line in file:
4     list = re.findall("-?[0-9]+\.[0-9]+",line)
5     print("findall()返回列表为:",list)
6     for num in list:
7         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}$

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

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

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

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

3.电子邮箱验证

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

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

本人也是初学python,这篇随笔其中有的地方肯定有不好的地方,如果你有什么建议或发现什么错误,欢迎在下面评论区提出,如果你觉得鄙人写得还不错,请各位客官动动小手点个推荐??吧!



原文地址:https://www.cnblogs.com/lyj-blogs/p/10133688.html

时间: 2024-11-15 16:06:55

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

python 初学者

明确学习目标,不急于求成 当下是一个喧嚣.浮躁的时代.我们总是被生活中大量涌现的热点所吸引,几乎没有深度阅读和思考的时间和机会.我始终认为,学习是需要沉下心来慢慢钻研的,是长 期的:同时,学习不应该被赋予太多的功利色彩.一个Python 程序员的成长路线图应该是这样子的:基础语法–>语感训练–>课题练习–>分方向继续学习–>中级程序员–> 拓展深度和广度–>高级程序员. 然而,很多新手的学习路线图却是这样子的:学完基础语法之后,不了解 http 协议和 Ajax 异步请

python进阶十_正则表达式(一)

最近状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思完全不在点上,希望可以借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,如果真的是我自己的问题呢,以前我经常跟别人说,千万不要怀疑自己,因为很清楚一旦连自己都变的不可信,那这个世界就太疯狂了,当一遍一遍的问我,现在连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到现在竟然需要自己去说服自己,何其的悲哀~ 一.正则表达式基础 1.基本概念 正则表达式是计算机科学的一个概念.正则表达式使用单个字符串来描

Python初学者的17个技巧

交换变量 x = 6 y = 5 x, y = y, x print x >>> 5 print y >>> 6 if 语句在行内 print "Hello" if True else "World" >>> Hello 连接 下面的最后一种方式在绑定两个不同类型的对象时显得很酷. nfc = ["Packers", "49ers"] afc = ["Ravens

Python程序文件结构02

一.Python程序文件 1.Python源程序文件通常以.py为扩展名 例如,新建一个名为firstpycode.py的文件,内容如下所示: #!/bin/bash/python import platform-->导入模块 print platform.uname()--> 1)第一行为shebang,即执行脚本时通知内容要启动的解释器 2)第二行通过import导入一个python模块模块platform 3)第三行打印platform模块的uname方法的执行结果 2.给予此脚本以执行

python re模块学习--正则表达式函数

这里主要介绍Python中常用的正则表达式处理函数.关于python中正则表达式的语法会再总结一篇博文. re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. 代码如下: #!/usr/bin/env python# -*- coding: utf-8 -*-import retext = "JGood is a handsome boy, he is cool, clever, and so on..."m = re.match(r&qu

python ConfigParser例子02

#coding:utf-8 import ConfigParser class Conf(): def __init__(self,name): self.name = name self.cp = ConfigParser.ConfigParser() self.cp.read(name) def getSections(self): return self.cp.sections() def getOptions(self, section): if self.cp.has_section(

Python 初学者的最佳学习资源

本文由 伯乐在线 - caimaoy 翻译,唐尤华 校稿.未经许可,禁止转载!英文出处:Matt Makai.欢迎加入翻译组. Python 社区在分享学习资源和帮助初学者掌握语言方面总是很积极的.但也就是因为资源过多,导致人们很难知道如何找到. 本文整理了最好.最通用的 Python 资源,并且简述了其内容.[伯乐在线注:译文中添加了一些中文Python学习资源] 致编程新手 如果你是第一次学习编程,本节推荐的书是比较适合你的.如果在学习Python之前你已经学习过其他的编程语言,请跳过此节直

python基础之 re(正则表达式)模块学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import retext = "JGood is a handsome boy, he is cool, clever, and so on..."m = re.match(r"(\w+)\s", text)i

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少