Python 学习 —— 正则表达式

版权声明:转载注明出处 https://blog.csdn.net/qq_19428987/article/details/87946698

正则表达式是一个概念,匹配符合某个规则的字符串,各个编程语言都有。常用来查找/替换。
正则表达式的写法:

  • .(点号):表示任意一个字符(除了\n)
  • []:匹配中括号中列举的任意字符。
  • \d:任意一个数字
  • \D:除了数字都可以
  • \s:表示空格,tab键
  • \S:除了空白符号
  • \w:单词字符,就是a-z,A-Z,0-9,_
  • \W:除了\w的内容
  • *:表示前面内容重复零次或者多次,\w *
  • +:表示前面的内容至少出现过一次
  • ?:前面才出现的内容零次或者一次
  • ^:匹配字符串的最开始
  • $ : 匹配字符串的结尾
  • {m,n}:允许前面的内容至少出现m次,最多n次
  • \b:匹配单词的边界
  • ():被括起来的表达式将作为分组,从表达式左边开始没遇到一个分组的左括号“(”,编号+1.
    分组表达式作为一个整体,可以后接数量词。表达式中的|仅在该组中有效。
    验证一个数字:^\d$ ;
    必须要有一个数字,最少一位:^\d+$ ;
    只能出现数字,且位数为5-10位数:^\d{5,10}$ ;
    注册者输入年龄(16~99):^ [16-99]$
    只能输入英文字符和数字:^ [A-Za-z0-9]$
  • \A:只匹配字符串开头,\Aabcd ,则abcd
  • \Z:仅匹配字符串末尾,abcd\Z,则abcd
  • | :左右任意一个
  • (?P < name >) :分组,除了原有的编号外再指定一个额外的别名,
  • (?P=name):引用别名为的分组匹配到字符串

RE使用大致步骤

  • 导入相关的包:re
  • 使用compile讲正在字符串编译为一个pattern对象
  • 通过pattern对象提供一系列方法对文本进行查找匹配,获得匹配结果,一个Match对象
  • 最后根据Match对象提供的属性和方法获得信息进行相应的操作

Re常用函数

  • group:获得一个或者多个匹配的字符串,当获得整个匹配的子串时直接使用group或者group(0)
  • start:获取分组匹配的子串在整个字符串中的真实位置,默认参数为0
  • end:获取分组匹配的子串在整个字符串中的结束位置,默认为0
  • span:返回的结构技术(start(gourp),end(group))
import re
p=re.compile(r'([a-z]+) ([a-z]+)',re.I)
match=p.match("I love learing")
print(match.groups()) #匹配
q=re.compile(r'\d+') #匹配数字
m=q.search("one1235two45three") #找到第一个数字字符串
n=q.findall("one1235two45three") #找出所有数字字符串
print(m)
print(n)
rest=q.sub(r" ","one1235two45three") # 讲数字字符串找出并替换成“ ”(空格)
print(rest)
输出结果:
('I', 'love')
<_sre.SRE_Match object; span=(3, 7), match='1235'>
['1235', '45']
one two three
  • 匹配中文:大部分中文内容表示的范围[u4e00-u9fa5],不包括全角标点
  • 贪婪:尽可能多的匹配,(*)表示贪婪匹配
  • 非贪婪匹配:找到符合条件的最小内容,(?)表示非贪婪
  • 正则默认是贪婪匹配

暂时初步了解一下Python的正则表达式,要写出比较好的正则表达式还是比较难得,需要在实际应用中去积累增加经验。后续实践之后再回来更新一下这篇博客吧。

猜你喜欢

转载自blog.csdn.net/qq_19428987/article/details/87946698