正则表达式

  非Python独有 re库提供

用法讲解:

   模式描述

\w匹配字母数字及下划线

\W匹配非字母数字下划线

\s匹配任意空白字符,等价于 [\t\n\r\f].

\S匹配任意非空字符

\d匹配任意数字,等价于 [0-9]

\D匹配任意非数字

\A匹配字符串开始

\Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串

\z匹配字符串结束

\G匹配最后匹配完成的位置

\n匹配一个换行符

\t匹配一个制表符

^匹配字符串的开头

$匹配字符串的末尾。

.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

[...]用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'

[^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。

*匹配0个或多个的表达式。

+匹配1个或多个的表达式。

?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

{n}精确匹配n个前面表达式。

{n, m}匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

a|b匹配a或b

( )匹配括号内的表达式,也表示一个组

re.match  尝试从字符串的起始位置匹配一个模式,如果不是起始位置配置成功的恶化,match()就返回none

re.match(pattern,string,flags=0)  以^为开头 以$结束

贪婪模式与非贪婪模式 :

重点:.*以及.*? 前者贪 后者不贪 以?后者为基准


转义: 特殊字符的处理 前面加上'\' 使得正则的表达式失去意义

小节:

   尽量使用泛匹配,使用括号得到匹配目标,尽量使用非贪婪模式、有换行符就换re.S


re.search 扫描整个字符串并返回第一个成功的匹配 不在意开头如何

建议:为匹配方便,能用search就不用match 


re.findall 搜索字符串 以列表形式返回全部能匹配的子串  list类型


re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串 (pattern,'内容',string)

特殊:包含原字符本身 r'\ 使用转义


re.compile 将正则字符串编译成正则表达式对象

以便于复用该匹配模式 (方便复用匹配模式)

pattern = re.complie(pattern,re.S)

以pattern作为字符串传递

经验:

^a-zA-Z 匹配非字母以外的鬼东西

去除中文以外的东西 

import re

sample = u'I am from 美国。We should be friends. 朋友。'

for n in re.findall(u'[\u4e00-\u9fff]+',sample):

    print(n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。