全部产品
云市场

正则操作

更新时间:2019-09-18 15:39:40

目录

正则表达式

提供正则表达式相关的sdk,需要import re
这里提供的是部分常用用法。

split

split(regx,text)

  • regx : 正则表达式
  • text : 需要拆分的字符串

切分字符串。

  1. re.split(r'\s+', 'a b c')

match

match(regx,text)

  • regx : 正则表达式
  • text : 需要拆分的字符串

正则匹配,成功匹配返回一个对象,否则返回None。
因此可以用来做判断。

  1. if re.match(r'^(\d{3})-(\d{3,8})$', '010-12345'):
  2. pass

match.groups

match(regx,text).groups()

  • regx : 正则表达式
  • text : 需要拆分的字符串

输出匹配到的所有字符子串,是一个元祖。

  1. >>> t = '19:05:30'
  2. >>> m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
  3. >>> m.groups()
  4. ('19', '05', '30')

match.group

match(regx,text).group(index)

  • regx : 正则表达式
  • text : 需要拆分的字符串
  • index : 子串的下标

匹配并分组功能。
注意到group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串。

^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:

  1. >>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
  2. >>> m.group(0)
  3. '010-12345'
  4. >>> m.group(1)
  5. '010'
  6. >>> m.group(2)
  7. '12345'

特殊字符

  1. $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' '\r'。要匹配 $ 字符本身,请使用 \$
  2. ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( \)
  3. * 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
  4. + 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
  5. . 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \.
  6. [ 标记一个中括号表达式的开始。要匹配 [,请使用 \[
  7. ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?
  8. \ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n''\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
  9. ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
  10. { 标记限定符表达式的开始。要匹配 {,请使用 \{。
  11. | 指明两项之间的一个选择。要匹配 |,请使用 \|。

限定符

  1. . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
  2. [...] 用来表示一组字符,单独列出:[amk] 匹配 'a''m''k'
  3. [^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
  4. * 匹配0个或多个的表达式。
  5. + 匹配1个或多个的表达式。
  6. ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
  7. {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o
  8. {n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'
  9. {n,m} m n 均为非负整数,其中最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

定位符

  1. ^ 匹配字符串的开头
  2. $ 匹配字符串的末尾。
  3. \b 匹配一个单词边界,即字与空格间的位置。
  4. \B 非单词边界匹配。

预定义

  1. \w 匹配字母数字及下划线
  2. \W 匹配非字母数字及下划线
  3. \s 匹配任意空白字符,等价于 [\t\n\r\f].
  4. \S 匹配任意非空字符
  5. \d 匹配任意数字,等价于 [0-9].
  6. \D 匹配任意非数字
  7. \A 匹配字符串开始
  8. \Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。
  9. \z 匹配字符串结束