@qidiandasheng
2021-04-23T07:04:07.000000Z
字数 1078
阅读 2036
Python&Ruby
Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果。
re模块下的函数:
函数 | 描述 |
---|---|
compile(pattern) | 创建模式对象 |
search(pattern,string) | 在字符串中寻找模式 |
match(pattern,string) | 在字符串开始处匹配模式(如果开头处匹配不到则匹配失败) |
split(pattern,string) | 根据模式分割字符串 |
findall(pattern,string) | 列表形式返回匹配项 |
sub(pat,repl,string) | pat匹配项用repl替换 |
escape(string) | 特殊字符转义 |
这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。另外,你也可以在regex字符串中指定模式,比如re.compile('pattern', re.I | re.M)
与re.compile('(?im)pattern')
是等价的。
匹配模式 | 说明 |
---|---|
I(IGNORECASE) | 匹配时不区分大小写 |
M(MULTILINE) | 更改^ 和$ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$ 的精确含意是:匹配每一行的末尾) |
S(DOTALL) | 更改. 的含义,使它与每一个字符匹配(包括换行符\n ) |
L(LOCALE) | 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定 |
U(UNICODE) | 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性 |
X(VERBOSE) | 这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。 |
I(IGNORECASE)
pat = re.compile(r"a\d+b",re.I)
pat.findall('hha23Bhh')
X(VERBOSE)
//下面两个表达式等价
a = re.compile(r"""\d + # the integral part
\. # the decimal point
\d * # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")