正则表达式

正则表达式

python中使用

  • re.search(pattern, string, flags=0)

    扫描整个 字符串 找到匹配样式的第一个位置,并返回一个相应的 [匹配对象]。如果没有匹配,就返回一个 None ; 注意这和找到一个零长度匹配是不同的。

  • re.match(pattern, string, flags=0)

    如果 string 开始的0或者多个字符匹配到了正则表达式样式,就返回一个相应的 [匹配对象]。 如果没有匹配,就返回 None ;注意它跟零长度匹配是不同的

  • fullmatch(pattern, string, flags=0)

    如果整个 string 匹配到正则表达式样式,就返回一个相应的 [匹配对象] 。 否则就返回一个 None ;注意这跟零长度匹配是不同的。

  • split(pattern, string, maxsplit=0, flags=0)

    • 第一个参数:正则表达式

    • 第二个参数:要匹配查找的原始字符串;

    • 第三个参数:可选参数,表示最大的拆分次数,默认为0,表示全部分割;

    • 第四个参数:可选参数,标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等;

      1
      2
      3
      import re
      re.split('\.', 'www.csdn.com')
      # ['www', 'csdn', 'com']

      需要特别注意的是,这个方法并不是完全匹配。它仅仅决定在字符串开始的位置是否匹配。所以当pattern结束时若还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符’$’

      例如:

      1
      2
      3
      4
      5
      re.split(‘z’, ‘p.python.p’)
      # ['p.python.p']; 失败返回原string列表

      re.split(‘p’, ‘p.python.p’)
      # ['', '.', 'ython.', ''] 成功返回新列表
  • re.findall(pattern, string, flags=0)

string 返回一个不重复的 pattern 的匹配列表, string 从左到右进行扫描,匹配按找到的顺序返回。如果样式里存在一到多个组,就返回一个组合列表;就是一个元组的列表(如果样式里有超过一个组合的话)。空匹配也会包含在结果里。

特殊字符

  • []

    匹配[…]中的所有字符

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    re.findall('[a-z]','I have a dream.')
    # ['h', 'a', 'v', 'e', 'a', 'd', 'r', 'e', 'a', 'm']
    re.findall('[A-z]','I have a dream.')
    # ['I', 'h', 'a', 'v', 'e', 'a', 'd', 'r', 'e', 'a', 'm']

    # 特殊内容
    # ^再括号里指非
    re.findall('[^A-z]','I have a dream.')
    # [' ', ' ', ' ', '.']


  • $

    只匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 `$`。

    1
    2
    3
    4
    5
    re.findall('the$','The dog sda;hf;kthe the')
    # ['the']

    re.findall('The$','The dog sda;hf;kthe the')
    # []
  • ^

    只匹配结束位置

    1
    2
    3
    4
    5
    re.findall('^The','The dog sda;hf;kthe the')
    # ['The']

    re.findall('^he','The dog sda;hf;kthe the')
    # []
  • *

    匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。

    1
    2
    re.findall('oo*h!','oh! ooh! oooh! ooooh oooh! oooooh!')
    # ['oh!', 'ooh!', 'oooh!', 'oooh!', 'oooooh!']
  • ?

    匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。

    1
    2
    re.findall('colou?r','color colour colouur')
    # ['color', 'colour']
  • +

    匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。

    1
    2
    re.findall('oo+h!','oh! ooh! oooh! ooooh oooh! oooooh!')
    # ['ooh!', 'oooh!', 'oooh!', 'oooooh!']
  • .

    匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。

    1
    2
    re.findall('beg.n','begin begun begun beg3n begn')
    # ['begin', 'begun', 'begun', 'beg3n']
  • {n}

    匹配前面的子表达式n次。

    1
    2
    re.findall('oo{2}h!','oh! ooh! oooh! ooooh oooooh!')
    # ['oooh!', 'oooh!']

    {n,}

    匹配前面的子表达式至少n次且最多匹配 m 次。

    1
    2
    re.findall('oo{1,}h!','oh! ooh! oooh! ooooh oooooh!')
    # ['ooh!', 'oooh!', 'oooooh!']

    {n,m}

    匹配前面的子表达式至少n次。

    1
    2
    re.findall('oo{1,3}h!','oh! ooh! oooh! ooooh oooooh!')
    # ['ooh!', 'oooh!', 'ooooh!']

转义

  • \s 空白符 \S 非空白符
  • \w 字母,数字,下划线 等于[A-Za-z0-9]
  • \n 换行符

常用表达式

数字相关

1 数字:^[0-9]$
2 n位的数字:^\d{n}$
3 至少n位的数字:^\d{n,}$
4 m-n位的数字:^\d{m,n}$
5 零和非零开头的数字:^(0|[1-9][0-9]
)$
6 非零开头的最多带两位小数的数字:^([1-9][0-9])+(.[0-9]{1,2})?$
7 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
8 正数、负数、和小数:^(-|+)?\d+(.\d+)?$
9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
11 非零的正整数:^[1-9]\d
$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
12 非零的负整数:^-[1-9][]0-9”$ 或 ^-[1-9]\d$
13 非负整数:^\d+$ 或 ^[1-9]\d*|0$
14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非负浮点数:^\d+(.\d+)?$ 或 ^[1-9]\d.\d|0.\d*[1-9]\d*|0?.0+|0$
16 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d.\d|0.\d*[1-9]\d*))|0?.0+|0$
17 正浮点数:^[1-9]\d.\d|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
18 负浮点数:^-([1-9]\d.\d|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$

校验

1 汉字:^[\u4e00-\u9fa5]{0,}$
2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 长度为3-20的所有字符:^.{3,20}$
4 由26个英文字母组成的字符串:^[A-Za-z]+$
5 由26个大写英文字母组成的字符串:^[A-Z]+$
6 由26个小写英文字母组成的字符串:^[a-z]+$
7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以输入含有^%&’,;=?$"等字符:[^%&’,;=?$\x22]+
12 禁止输入含有的字符:[^\x22]+

  • Copyrights © 2018-2022 Haojia Zhu
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信