抱歉,你查看的文章不存在

python分布式爬虫搜索引擎实战-1-正则表达式

正则表达式

比如: 一天前中提取出1

特殊字符:

  • ^:代表以该字符为开头。如^b就是b为开头。
  • .: 代表任意一个字符。如^b.就是b开头后面一个字母任意
  • *: 代表前一个字符可以出现任意次(0个也可以)。如^b.*就是b开头后面可有任意数个任意字母
  • $: 代表前一个字符为结尾符合。 如:.*3$就是以3为结尾的任意字符串
  • ?:非贪婪匹配。一般情况从右往左匹配正则,?可以实现从左往右,非贪婪指遇到第一个就结束。.*?(b.*?b).*就是首先开始的b和b之间的字符串
  • +: 代表前面的字符至少出现一次(0个到无数个)。如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: 匹配数字

example 提取出生日期

# _*_ coding: utf-8 _*_
__author__ = 'mtianyan'
__date__ = '2017/3/26 13:13'

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

0 篇文章106 人订阅

相关文章

来自专栏测试开发架构之路

C++之虚函数的作用和使用方法

在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都...

2988
来自专栏静默虚空的博客

[Java 基础]数组

数组初始化 定义数组语法格式 定义数组有两种方式,如下两种格式是等价的: int[] a1; int a1[];  注:在C/C++中,不支持第一种格式。但是...

1888
来自专栏程序你好

Java中嵌套类用法

在Java中,可以在另一个类中定义一个类。这些类称为嵌套类。它们使您能够对只在一个地方使用的类进行逻辑分组。因此,这增加了封装的使用,并创建了更具可读性和可维护...

1624
来自专栏塔奇克马敲代码

第 14 章 重载运算与类型转换

2486
来自专栏编程理解

正则表达式(一):常用元字符

正则表达式是一种字符串模式,用来对某些规则的文本内容进行处理。利用字符串构成成的数据结构,来完成对文本内容的匹配。

2215
来自专栏测试开发架构之路

C++之迭代器

迭代器的概念 迭代器是用来访问string对象或vector对象的元素的,类似于下标运算和指针。 其对象是容器中的元素或string对象中的字符; 使用迭代器可...

3065
来自专栏水击三千

JavaScript函数(二)

在前面我们已经对函数作了简单的介绍,比如函数的定义、函数的声明、函数的调用和函数的传参等。本节将进一步介绍函数的应用,深度理解函数的各种使用。 函数是一个对象,...

2887
来自专栏函数式编程语言及工具

泛函编程(9)-异常处理-Option

     Option是一种新的数据类型。形象的来描述:Option就是一种特殊的List,都是把数据放在一个管子里;然后在管子内部对数据进行各种操作。所以Op...

1936
来自专栏WindCoder

Java漫谈-数组

在Java语言中,数组是对象(An object is a class instance or an array.),而且是动态创建的。

1801
来自专栏待你如初见

Day07

有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员

991

扫码关注云+社区

领取腾讯云代金券