@qidiandasheng
2021-04-22T23:04:07.000000Z
字数 1078
阅读 2459
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*")
