[Python3] 实用正则表达式

python正则表达式相关函数

  • import re
  • re.search(condition_str, source_str) :正则匹配字符串中满足条件的子字符串,返回布尔值。
    re.findall(condition_str, source_str):正则查找字符串中满足条件的子字符串,返回所有子字符串(the output is a list that has a string as
    the single element in the list)。

正则表达式 cheat sheet

  • .:匹配任意字符
    a..b : 匹配所有axxb型
    .+ 万能牌(wild card): a.+b匹配所有以a开头以b结尾的字符串
    (a,b间非空)。 x+匹配含有一个或更多x的字符串。(greedy)
    +?+的非greedy模式
    .*:广谱万能牌: a.*b匹配所有以a开头以b结尾的字符串(a,b间可以无其他字符)。x*匹配含有一个或更多x的字符串。(greedy)
    *?*的非greedy模式
    (+与*都与左数第一个字符联合)
    *和+均为贪心匹配(greedy matching) :matches as many required characters as possible

  • \s : 匹配所有空格字符
    \S:匹配所有非空格字符

  • \b:匹配词的开始或结尾
    \B:匹配词的非开始结尾

  • \d :匹配所有数字,相当于set[0-9]
    \D:匹配所有非数字,相当于set[^0-9]

  • []:方括号(square bracket)内字符为可接受匹配的字符
    []中第一个字符为^时,括号内容被反义。[^A-Za-z]表示匹配除了A-Z和a-z的所有字符。
    ():圆括号(parentheses)内字符为在匹配过程中被忽略的字符。但与findall()函数连用时,虽然依旧用整个正则表达式查找,但最终得到的返回值只有括号内的部分。

  • 转义字符(escape characters) :\

  • ^:匹配行初
    $:匹配行末

应用实例

  • 邮件地址
    [a-zA-Z0-9]\S*@\S*[a-zA-Z0-9]
  • 取出所有满足Details: http://source.saki.org/viewsvn/?view=rev&rev=39772格式的url中的revision numbers
    '^Details:.*rev=([0-9.]+)'

外部链接

20个常用正则表达式

推荐阅读更多精彩内容