• Python初识模块之正则表达式


    什么是正则表达式

      正则表达式是字符串匹配的一种规则,在线测试工具http://tool.chinaz.com/regex/

    [字符组]在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
    字符分为很多类,比如数字、字母、标点等等。
    假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。
    [0-9]、[a-z]、[A-Z]、[0-9a-z]等等都是字符组的应用,注意一个字符组只匹配一个字符哦

        字符:

    元字符  匹配内容

    .     除换行符以外的任意字符

    w    匹配字母,数字,下划线 --word

    s     匹配所有空白符 --space

    d     匹配数字 --digit

    W      匹配非字母,数字,下滑线的字符

    S    匹配非空白符

    D    匹配非数字

        匹配一个换行符

         匹配制表符 --table

    .      匹配一个单词的结尾(不好用)

    ^      匹配字符串的开头

    $      匹配字符串的结束,与^连用可以严格约束字符串 eg: ^[a-z]$只能匹配一个字母

    |     或,从左到右匹配,所以长的应该在前,短的在后

    ()      表示一个组

    [^...]    除了...的所有字符 eg: [^a-z]

      量词:用来约束紧跟着的字符,贪婪匹配,尽可能匹配多次

    *    表示重复0次或多次

    +    表示重复1次或多次

    ?     表示重复0次或1次

    {n}    重复n次

    {n,}   重复n次或多次

    {n,m}   重复n次或m次  

      在量词后面加上?就变成了非贪婪匹配,也叫惰性匹配

       忘川和忘清和忘了学习

    忘.?  忘川 忘清 忘了  ?0次或1次

    忘.*    忘川和忘清和忘了学习  0次或多次

    忘.+   忘川和忘清和忘了学习 1次或多次

    忘.{1,2}   忘川和 忘清和  忘了学  1次或2次

    忘.*?    忘 忘 忘   加上?时变成了惰性匹配

    忘[川清了学习]*   忘川 忘清  忘了学习

    忘[^和]*   忘川 忘清  忘了学习  

      转义符

    在正则表达式中,有很多有特殊意义的是元字符,比如 和s等,如果要在正则中匹配正常的" "而不是"换行符"就需要对""进行转义,变成'\'。

    但在很多时候这样会很麻烦,所以可以在使用正则时在想要匹配的字符串前加上r    eg: r' '

      贪婪匹配+?

    *?    重复任意次,但尽可能少重复
    +?   重复1次或更多次,但尽可能少重复
    ??   重复0次或1次,但尽可能少重复
    {n,m}?  重复n到m次,但尽可能少重复
    {n,}?  重复n次以上,但尽可能少重复

    .*?x  重复任意次,直到x出现

      

  • 相关阅读:
    ld: cannot find lXXX" 如lpthread lgomp
    Glib交叉编译:g__cancellable_lock undeclared!&HEADER/C_IN undeclared!&undefined reference to "localeconv"
    Android_清除/更新Bundle中的数据(不finish() Activity的情况下)
    读Kernel感悟Linux内核启动从hello world说起
    细数二十世纪最伟大的十大算法
    error: *** No iconv() implementation found in C library & libiconv 交叉编译 失败编译
    gnulib+glib+glibc+libc的不同转
    [Android] 以singleInstance模式加载的Activity怎么接收以Bundle方式传递过来的参数 By onNewIntent() but not onResum
    Glib在armlinux下的交叉编译
    python 笔记
  • 原文地址:https://www.cnblogs.com/xfdhh/p/9943489.html
Copyright © 2020-2023  润新知