python特殊含义符号_python 正则表达式中的特殊符号介绍

python 2.7.3

正则表达式:正则表达式就是根据自己的需要定义字符串而已,

定义方法: s = r'\d{3,4}' 为了与字符串赋值做区分,定义时需要加个 r 。

用途  : 定义好以后可以从其他给定的字符串(如网络数据流,网页代码)中查找与自己定义的字符串相同的字符串'. 如网页数据提取:自定义一个规则将网页中的内容按自己的规则提取出需要的东西。

目前在python 中,正则的使用通过re模块来实现,help(re) 查看详细介绍.

可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、e-mail地址、TeX命令或任何你想搞定的东西。你也可以使用 RE 以各种方式来修改或分割字符串。正则表达式模式被编译成一系列的字节码,然後由用 C 编写的匹配引擎执行。在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式编写 RE 以令生产的字节码运行速度更快。

############################ 元字符 ###########################

一:字符匹配

1.普通字符匹配

123和123匹配

2.元字符匹配(help(re)中有详细说明)

元字符有以下几类:

1) 代表特殊含义的有:‘\’和‘.’ 两个

2) 有6个是字符类的:\d 、\D、\s、\S、\w、\W

3) 有四个位置类:\b、\B、\A、\Z、以及 (^,$)

4) 重复 的有: *、+、?、{}

5) 用于分组: ()

6) 可选: |、[]

7) 6个编译选项:I、L、M、S、U、X

分别介绍其含义:

"." 表示任意字符

"^ " 表示字符串的起始、行首:>>>str='123,321,234,432,123'

>>> ss='123'

>>> re.findall(ss,str) //从str中查找123

['123', '123']

>>>ss='^123'

>>>re.findall(ss,str)

['123'] #123是行首的那个

"$" 表示字符串的结束

>>>ss='123$'  将匹配最后的那个123

+   表示匹配一或更多次

*  重复匹配0或更多次

?  表示匹配零次或一次-

*?, +?, ?? 符合条件的情况下,匹配的尽可能少//限制*,+,?匹配的贪婪性

{m} 匹配此前的字符,重复m次  如:r='010-\d{8}' 将表示010-后面需要8个0到9的数字

{m,n} m到n次,m,n可以省略

举个例子 ‘a.*b’ 表示a开始,b结束的任意字符串

a{5} 匹配连续5个a

[ ]

》 表示一系列字符 [abcd] 表a,b,c,d  注:ss = r'a[bcd]ef' ,将表示ss=abef 或acef或adef

[0-9] 表示0到9 [a]

》 补集匹配不在区间内的字符:[^123] ,表示将匹配除了123的其它字符

| A|B 表示A或者B , AB为任意的正则表达式 另外|是非贪婪的如果A匹配,则不找B

(…) 这个括号的作用要结合实例才能理解, 用于提取信息

\d [0-9] 匹配任何十进制数 [0-9]

\D 非 \d 匹配任何非十进制数 [^0-9]

\s 表示字符   [\t\n\r\f\v]

\S 非字符   [^\t\n\r\f\v]

\w 匹配任何字母数字字符[a-zA-Z0-9_]

\W 非 \w

--------------------------------------

6 个正则表达式的编译标志:

I (IGNORECASE) 用于不区分大小的匹配

L (LOCALE) 使得特殊的序列(如词和空格)与语言设置相关

M (MULTILINE) 意味着在多行中搜索该模式,这样 ˆ 可以匹配字符串的开始位置和每一个换行符后面的位置,$ 可以匹配每一个换行符前面的位置和字符串的结束位置

S (DOTALL) 强制使用点专用字符 (.) 匹配任意字符,包括换行符

U (UNICODE) 使得特殊的序列可以感知 Unicode

X (VERBOSE) 可以增强您编写的正则表达式的可读性。要一次使用多个标志,只需将它们加在一起即可 — 如 re.compile("Oracle", re.I+re.S+re.M)。

M属性介绍:

>>> s = '''

... baidu glgoo cnblogs

... cnblogs

... baidu 163 baidu

... glgoo cnblogs

... '''

>>> r = r'^glgoo'

>>> re.findall(r,s)

[]

>>> re.findall(r,s,re.M)

['glgoo']

X属性介绍

>> s = '''

... \d{3,4}

... -?

... \d{8}

... '''

>>> re.findall(s,'321-12345678')

[]

>>> re.findall(s,'321-12345678',re.X)

['321-12345678']

>>>s

'\n\\d{3,4}\n-?\n\\d{8}\n'

用'''定义的字符串存储时是用\n链接的,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值