作者king4647 (发呆)
看板RegExp
标题[问题]python正规表达法请教
时间Sat Jun 25 16:08:30 2016
大家好 我是python的新手
最近遇到一些问题想请教高手们
我想将类似 2000.10.10|4.5|中文|5566
分成四块 用group(0-3)取出来
不过试了很多方法一直卡住 想请大家帮忙看看感谢~~
我的code:
import re
a= "2000.10.10|4.5|中文|5566"
m=re.match(r"(^.{10})|(.{3})|(.{2})|(\d{4}$)",a)
print m.group(0)
print m.group(1)
print m.group(2)
print m.group(3)
输出结果:
2000.10.10
2000.10.10
None
None
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.121.249.196
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/RegExp/M.1466842114.A.83A.html
※ 编辑: king4647 (203.121.249.196), 06/25/2016 16:10:21
1F:→ s25g5d4: | 是 or 的意思 要 match 字面上的 | 需要转译 06/25 17:38
2F:→ s25g5d4: 改成 \| 就行了 06/25 17:39
感谢大大 解出来了
不过想问问观念@@~
a= "2000.10.10|4.5|中文|5566"
m=re.match(r"(^.+)\|(.+)\|(.+)\|(\d{4}$)",a)
print m.group(0)
print m.group(1)
print m.group(2)
print m.group(3)
print m.group(4)
输出:
2000.10.10|4.5|中文|5566
2000.10.10
4.5
中文
5566
想问为什麽m.group(0)会是全部呢? 谢谢
※ 编辑: king4647 (203.121.249.196), 06/25/2016 18:44:20
3F:推 LPH66: 基本上规定就是 0 是全部, 1 是第一个, 2 是第二个 etc 06/25 19:24
4F:→ LPH66: 许多语言中使用 regexp 做比对的结果都是这样定的 06/25 19:25
5F:→ king4647: 感谢~~~ 06/25 23:16