python中讲正则

正则
(?=...)     写在某个正则的后面,表示当后面是什么什么的时候,会去匹配,看例子
ex:
    
import re
    m = re.compile('python(?=linux)')
    pirnt(m.match('pythonlinux').group(0))
    #python
    print(m.match('pythonjavascript'))
    #None


(?!...)     和前面这个正好相反,表示当后面的不是什么什么的时候,会去匹配
ex:
   
 import re
    m = re.compile('python(?!javascript)')
    print(m.match('pythonlinux').group(0))
    #python
    print(m.match('pythonjavascript'))
    #None


(?<=...)    这个用来判断一个寻找字符串的前面是什么的判定,比如 "(?=123)\d*" 这个用来寻找前面是123(不一定开头的),后面是一串数字的字符串
ex: 
    用编程语言的search来适用这个pattern
    
import re
    m = re.search('(?<=python)\d\.\d','python3.3')
    m.group(0)
    #'3.3'
    则会匹配python后面的3.3


(?<!...)    这个和上面的那个正好相反,想要寻找一个字符串的时候,希望它的前面不是某一串特定的字符串。我们也可以想想,上面的是=,下面的是!,
            可以想成==和!=,这个在编程语言中很常见吧。
ex:
    用编程语言的replace来适用这个pattern
   
 import re
    m = re.compile('(?<!python)\d{3}');
    m.sub('linux','python and 123 all good')
    #'python and linux all good'
    首先编绎一个正则表达式,"(?<!python)\d{3}"表示前面不是"python"的三个字符串,可以用来匹配"linux123"或者"pdf456",只要前面不是"python",但是后面有三个数字字符串的就行
    再者,re.compile()返回一个对象,这个对象有一个方法是sub,用来替换字符串,m.sub('linux','python and 123 all good'),说的是用"linux"去替换掉"python and 123 all good"字符串中前面不是"python"连续的三个数字字符串,找到"123",替换之


(?#...)     在编绎含有这个模式的表达式时,不需要考虑,仅仅当它一段注释
ex:
    
import re
    m = re.compile('(?#linux)\w*')
    list(m.match('python').group(0))
    #['p', 'y', 't', 'h', 'o', 'n']

#http://docs.python.org/3/library/re.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值