假设我有以下字符串:
"TEST="test123; xyz=testtest"|PATH="testCookie=1234;"|COOKIE="testCookie2=4321; testCookie=1234;"
我需要写一个正则表达式来只选择
testCookie=1234;
在COOKIE=""
领域。我尝试了正后视 (?<=COOKIE=")
但问题是我的目标并不总是在 (?<=COOKIE=")
之后的第一个位置
谁能帮我解决这个正则表达式?
假设您使用的是 PCRE 正则表达式,我们可以在这里尝试使用
\K
开关:
COOKIE=[^|]*?\KtestCookie=.*?;
这个模式说匹配:
COOKIE=
[^|]*?
匹配所有内容而不跨越|
部分边界\K
重置比赛testCookie=.*?;
然后匹配目标testCookie=
入口Lookbehind 和 Lookahead 断言应该在这里工作。
(?<=COOKIE=")[\s\S]*(?=")
(?<=COOKIE=")
看在前面'COOKIE="'
.[\s\S]
匹配任何字符。*
匹配[\s\S]
0次或更多次。(?=")
向后看"
.希望这有帮助。
没有环顾四周:
COOKIE="[^"]*(testCookie=\d+;)
COOKIE="
- 文字匹配[^"]*
- 除了 "
零次或多次(
- 捕获组开始
testCookie=
- 文字匹配\d+;
- 一个或多个数字后跟文字 ;
)
- 捕获组结束