python正则表达式

常用正则表达式方法:

  • pattern.match(从头找一个)
  • pattern.search(找一个)
  • pattern.findall(找所有)

常用字符

  • “.”号不能匹配"/n", 在re.DOTALL 时可以匹配换行符
>>> import re
>>> re.findall(".","\n")
[]
>>> re.findall(".","\n", re.DOTALL)
['\n']
##re.S 等同与 re.DOTALL
>>> re.findall(".","\n", re.S)
['\n']
  • “” 转义符号用途
>>> re.findall('\.', '.')
['.']
  • 贪婪/ 非贪婪
    • 贪婪的意思是匹配尽可能多的结果, 是指匹配到不能匹配为止
    • 非贪婪的意思是匹配就OK
    • 加“?”是非贪婪,不加是贪婪
需要注意的是 “.”号默认情况下不能匹配 "\n"

pattern.sub(替换)

In [8]: b = "chuan1zhi2"

In [9]: re.sub("\d","",b)
Out[9]: 'chuanzhi'

In [10]:     

re.compile(编译)方法

提高正则表达式的效率

In [10]: re.compile("\d")
Out[10]: re.compile(r'\d', re.UNICODE)

In [11]: p = re.compile("\d")

In [12]: p.findall(b)
Out[12]: ['1', '2']

In [13]: p.sub("_", b)
Out[13]: 'chuan_zhi_'

python中原始字符串问题


In [16]: r"a\nb" == "a\nb"
Out[16]: False

In [17]: r"a\nb" == "a\\nb"
Out[17]: True

In [19]: re.findall(r"a\nb","a\nb")
Out[19]: ['a\nb']

In [20]: re.findall(r"a\nb","a\\nb")
Out[20]: []

In [22]: re.findall("a\nb","a\nb")
Out[22]: ['a\nb']


windows下不使用原始字符串会出现问题
正则表达式忽略了r的影响

正则使用的注意点

  • re.findall(“a(.*?)b”,“str”), 返回括号里面的内容。括号起到一个分组的作用,能够返回括号中的内容。括号前后的内容起到定位和过滤的效果
  • 原始字符串r, 待匹配字符串中有反斜杠的时候,使用r能够忽视反斜杠的效果
  • 点号默认情况匹配不到’\n’
  • \s能够匹配空白字符,不仅仅包含空格,还有’\t|\r\n’
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值