正则表达式中的特殊字符如下表:
今天在用正则匹配HTTP响应体中的字符串时遇到了一些问题,要匹配的数据包如下图:
要匹配其中的字符串如下图:
很明显由http响应头Content-Type可以看出,响应体是JavaScript格式,要获取的信息是"张山2"
,其前后各有一个\"
,反斜杠是有意义的,它对"
进行转义。因项目需要,正则表达式写在json数组中,而json字符串中的特殊字符也要转义,也就是说要有双重转义,这在python re模块的官方文档也有说明,官方文档是这么说的:
官方文档说,要匹配一个\
,你需要写四个\
作为匹配特征,其中\\
是正则写法,而在字符串中又要对\\
分别进行转义,也就是需要四个\
。
一开始没弄明白,写的特征如下:
"value=\\\"(?<name>[^\"]+)\\\" name=\\\"user[name]\\\" id=\\\"user_name\\\""
总是不能匹配到张山2,错误有二,\"
的匹配不对,[]
的匹配也不对。
1、要匹配\"
,正确思路是:正则表达式中反斜杠\
是特殊字符,需要转义,而"
不是特殊字符,不用转义,所以应该是\\"
,然后在考虑在json字符串中,需要转义\
和"
,所以正确写法是\\\\\"
。
2、要匹配[,正确思路是:正则表达式中[
是特殊字符,需要转义,所以是\[
,然后考虑在json字符串中,需要转义\
,所以正确写法是\\[
。
综上,整个匹配特征应该为: