小王
文章8
标签3
分类5
正则表达式

正则表达式

正则表达式介绍

正则表达式,你可以把它当作是通配符的增强版,它所做的事情就是去帮你匹配指定规则的字符串。

而且它在计算机中的应用可能远比你想象的要多的多:

  1. 我们平时编译器中的词法分析器,会使用正则表达式去匹配代码中的关键字。
  2. 网站上的注册表单会用到正则表达式去判断密码的复杂程度。
  3. 在爬虫中,我们同样可以用正则表达式去提取我们需要的信息。

在线测试工具: https://regex101.com/

基础用法

限定符

  • ?符:它代表前面的这个字符出现0次或1次,也就是可有可与。
  • *符:它会去匹配0个或者【多】个字符。
  • +符:它会匹配出现【1】次以上的字符。
  • {}符:它可以指定字符出现的次数。

“或” 运算符

  • “或” 运算符用 ‘|’ 来表示。

字符类

  • ()符:它可以用来多个字符来使用限定符的匹配。
  • []符:方括号里的内容代表要求匹配的字符只能取自于它们。
  • [a-zA-Z]:表示大小写英文字母,所以英文字符。
  • [0-9]:表示数字。
  • [^0-9]符:如果在方括号前面写上一个尖号(脱字符),则代表要匹配除了尖号后面列出的【以外】的字符(包含换行符)。 # 数字以外的字符

元字符

正则表达式中大多数元字符都是以反斜杠开头

  • \d:代表数字字符,等同于[0-9]。
  • \D:非数字字符。
  • \w:代表“单词“字符,也就是所有的英文字符、数字加上下划线。
  • \W:非“单词”字符。
  • \s:代表空白字符(包含Tab和换行符)。
  • \S:非空白字符。
  • .符:.点在正则表达式中也是一个特殊字符,代表任意字符但不包含换行符。
  • ^符:匹配行首。
  • $符:匹配行尾。

高级概念

贪婪与懒惰匹配

在*、+、{}匹配字符的时候,默认会去匹配尽可能多的字符。只要在后面加上?就变成了懒惰匹配。
比如:

import re

# 去匹配html标签
str1 = '<span><b>This is a sample text</b></span>'

str2 = re.findall('<.+>', str1)
str3 = re.findall('<.+?>', str1)

print(str2)  # ['<span><b>This is a sample text</b></span>']
print(str3)  # ['<span>', '<b>', '</b>', '</span>']
本文作者:小王
本文链接:https://wswle.cn/20201206.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×