JAVA技术交流QQ群:170933152
正则表达式中的re.M表示将字符串视为多行,从而^匹配每一行的行首,$匹配每一行的行尾
我给你个Python语言的例子,你看看吧
这个程序是匹配冒号加一个空格后的数字串,中间有换行符\n所以用多行匹配re.M
1 2 3 4 5 6
扫描二维码关注公众号,回复:
5303195 查看本文章
7 8 9 10 11 12 13 14 15 16 |
|
re.I 忽略大小写
>>> re.match(r"A","abc",re.I)
<_sre.SRE_Match object at 0x0000000001F1A510>
re.M,将所有行的尾字母输出 multiple
>>> a="123abc456"
>>> import re
>>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0))
123abc456
>>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1))
123
>>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2))
abc
>>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(3))
456
>>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group())
123abc456
>>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups())
('123', 'abc', '456')
>>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).groups())
('3', 'c', '456')
>>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).groups(1))
('3', 'c', '456')
>>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).group(0))
123abc456
>>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).group())
123abc456
究其因:
1. 正则表达式中的三组括号把匹配结果分成三组
- m.group() == m.group(0) == 所有匹配的字符(即匹配正则表达式整体结果)
- group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
- m.groups() 返回所有括号匹配的字符,以tuple格式。m.groups() == (m.group(0), m.group(1), ...)
2. 没有匹配成功的,re.search()返回None
3. 当然郑则表达式中没有括号,group(1)肯定不对了。