python 正则表达式应用

主要方法

findall(pattern,string[, pos[, endpos]])
返回列表,包含了所有匹配的字符串

参数 描述
string 符合条件的字符串,正则表达式
pos 指定字符串的起始位置
endpos 指定字符串的结束位置

re.sub(pattern, repl, string, count=0, flags=0)
返回替换之后的字符串

参数 描述
pattern 符合条件的字符串,正则表达式
repl 替换为的字符串(可以是函数)
string 要被查找替换的字符串
count 替换的最大次数

re.split(pattern, string[, maxsplit=0, flags=0])
返回列表,包含了分割之后的字符串。加强版的字符串split方法

参数 描述
pattern 符合条件的字符串
string 原始文本
maxsplit 最大的分隔次数
flags 标志位,比如是否区分大小写等

re.compile(pattern[, flags])
返回一个正则表达式( Pattern )对象,可以调用 match() 和 search() 。

参数 描述
pattern 符合条件的字符串,正则表达式
flags 是否忽略大小写等
>>>import re
>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)   # re.I 表示忽略大小写
>>> m = pattern.match('Hello World Wide Web')
>>> print m                               # 匹配成功,返回一个 Match 对象
<_sre.SRE_Match object at 0x10bea83e8>
>>> m.group(0)                            # 返回匹配成功的整个子串
'Hello World'
>>> m.span(0)                             # 返回匹配成功的整个子串的索引
(0, 11)
>>> m.group(1)                            # 返回第一个分组匹配成功的子串
'Hello'
>>> m.span(1)                             # 返回第一个分组匹配成功的子串的索引
(0, 5)
>>> m.group(2)                            # 返回第二个分组匹配成功的子串
'World'
>>> m.span(2)                             # 返回第二个分组匹配成功的子串
(6, 11)
>>> m.groups()                            # 等价于 (m.group(1), m.group(2), ...)
('Hello', 'World')
>>> m.group(3)                            # 不存在第三个分组
Traceback (most recent call last):
  File "", line 1, in 
IndexError: no such group

模式总结

符号 说明 实例
*, +, ? 0到无限,1到无限,0到1
*?, +?, ?? 非贪婪匹配,匹配到第一个符合的字符就终止
{m,n} 前面的字符出现m到n次
{m,n}? 非贪婪匹配
[] 出现里面任意的一个字符
() 表示分组,正则表达式只返回分组的内容,也就是说只返回括号里的内容,括号外面的内容不返回,括号外面的内容只作为定位用,调用goups和span方法可以查看不同分组;也可以用\1,\2来取不同分组
(?= … ) 表达式’…’之前的字符串,特殊构建不作为分组
(?!..) 后面不跟表达式’…’的字符串,特殊构建不作为分组
(?<= … ) 跟在表达式’…’后面的字符串符合括号之后的正则表达式,特殊构建不作为分组
\s 匹配任意空白字符,相当于 [ \t\n\r\f\v]
\S 匹配任意非空白字符,相当于 [^ \t\n\r\f\v]

实例

条件替换,只去掉数字后面的x

import re
text = "100x text"
re.sub(r'(\d+)[xX]', r'\1', text) # 这个是用了分组的思想,把100x,替换成了100,\1是分组的第一个分组
re.sub('(?<=\d)[xX]', '', s)  # 这个是利用了分组的特殊构建

参考文献:
http://www.runoob.com/python/python-reg-expressions.html
https://www.cnblogs.com/yyyg/p/5498803.html

你可能感兴趣的:(vue,web前端)