Python爬虫学习3-正则表达式

正则表达式

想学爬虫不想学正则可以不可以:不可以。

比如: 1天前中提取出1,必须使用正则实现

特殊字符:

  • ^:代表以该字符为开头。如^b就是b为开头。
  • .: 代表任意一个字符。如^b.就是b开头后面一个字母任意
  • *: 代表前一个字符可以出现任意次(0个也可以)。如^b.*就是b开头后面可有任意数个任意字母
  • $: 代表前一个字符为结尾符合。 如:.*3$就是以3为结尾的任意字符串
  • ?:非贪婪匹配。一般情况从右往左匹配正则,?可以实现从左往右,非贪婪指遇到第一个就结束。.*?(b.*?b).*就是首先开始的b和b之间的字符串
  • +: 代表前面的字符至少出现一次(1个到无数个)。如b.+指b后面至少一个任意字母
  • {2} {2,5} {2, }: 代表前面的字符出现2次。代表前面的字符出现2到5次. 代表前面字符出现2次及两次以上
  • |:代表的意思 b|c,从左到右,看先匹配到那个。
  • (): 代表子字符串。如((a|b)123)代表group(1)为外层括号里的a123|b123;group(2)为内层括号值
  • []: 代表[]内的字符满足任意一个都可以。1 :[abcdefg]123代表以里面任意abcdefg中一个字母开头的都可以
    2:[0-9] [a-z]代表可以为0-9范围内任意一个字符,代表a-z范围任意一个字符 3: [^1] ^为取反,只要不等于1就可以
    注: 进入[]的字符都不再具有特殊含义[._]就指匹配到.或者_
  • \s \S: 1:\s代表匹配到一个空格。2:\S代表匹配到一个非空格
  • \w \W: 匹配单词字符[a-zA-Z0-9_]/非单词字符
  • [\u4E00-\u9FA5]: 匹配中文汉字
  • \d: 匹配数字

提取出生日期

# _*_ coding: utf-8 _*_
import re

line = "XXX出生于2001年6月"
# line = "XXX出生于2001/6/1"
# line = "XXX出生于2001-6-1"
# line = "XXX出生于2001-06-01"
# line = "XXX出生于2001-06"

regex_str = ".*出生于(\d{4}[年/-]\d{1,2}([月/-]\d{1,2}日|[月/-]\d{1,2}|[月/-]$|$))"

match_obj = re.match(regex_str, line)
if match_obj:
    print (match_obj.group(1))

你可能感兴趣的:(Python爬虫学习3-正则表达式)