如何使用正向后行断言正则匹配COOKIE字段内指定内容?
目标字符串
"TEST="test123; xyz=testtest"|PATH="testCookie=1234;"|COOKIE="testCookie2=4321; testCookie=1234;"
需求
编写正则表达式,仅选中COOKIE=""字段内的testCookie=1234;,此前尝试的正向后行断言(?<=COOKIE=")因目标内容不紧跟断言而失效。
解决方案
可以使用包含通配范围的后行断言来跳过COOKIE字段内的前置内容,正则表达式如下:
(?<=COOKIE="[^"]*)testCookie=1234;
正则解释
(?<=COOKIE="[^"]*):正向后行断言,匹配COOKIE="之后、任意数量非双引号字符的位置,以此跳过COOKIE字段内目标内容之前的所有内容(比如示例中的testCookie2=4321;)testCookie=1234;:精确匹配目标内容
如果需要更严谨地确保目标内容在COOKIE的双引号范围内,可结合正向先行断言,避免匹配到其他位置的相同内容:
(?<=COOKIE="[^"]*)testCookie=1234;(?=[^"]*")
验证效果
用目标字符串测试上述正则,会精准匹配COOKIE="..."内的testCookie=1234;,不会误匹配PATH字段中的相同内容。
内容的提问来源于stack exchange,提问作者Lüc
相关产品推荐
相关产品推荐

