给定模式,匹配字符串中指定字段的值:
1. 输入
给定如下字符串
{"errorCode":0,"errorMsg":"suc","result":{"datas":[
{"Status":0,"id":8,"orderNum":1,"status":1,"title":""},
{"Status":0,"id":13,"orderNum":1,"status":1,"title":"food"},
{"Status":0,"id":11,"orderNum":2,"status":1,"title":"stock"},
{"Status":0,"id":12,"orderNum":3,"status":1,"title":"beauty"},
{"Status":0,"id":14,"orderNum":5,"status":1,"title":"baby"}
],"version":"15"},"success":true}
2. 输出
只匹配"id"字段后的数字,比如8,13,11,…
参考模式:
(?<="id":)\d+
3. 验证
测试网站:http://tool.oschina.net/regex/
4. 说明
反向肯定预查匹配 (?<=…)是指,如果字符串当前位置有一个…的前置匹配,并且在当前位置结束,那么会形成一个匹配。比如(?<=abc)def
会从'abcdef'
中找到一个匹配,因为反向查找会往回查看3个字符并检查是否包含匹配的模式。包含的模式必须只能匹配某个固定长度字符串,意味着abc
或者a|b
是允许的,但a*
和a{3,4}
是不允许的。注意以反向肯定预查开始的模式不会匹配被搜索字符串的开头;因此你会更可能使用search()
功能而不是match()
功能。
5. 参考
正则表达式元字符:
https://www.runoob.com/regexp/regexp-metachar.html
https://docs.python.org/3/library/re.html