Positive Lookbehind Regex

问题描述 投票:0回答:4

假设我有以下字符串:

"TEST="test123; xyz=testtest"|PATH="testCookie=1234;"|COOKIE="testCookie2=4321; testCookie=1234;"

我需要写一个正则表达式来只选择

testCookie=1234;
COOKIE=""
领域。我尝试了正后视
(?<=COOKIE=")
但问题是我的目标并不总是在
(?<=COOKIE=")

之后的第一个位置

谁能帮我解决这个正则表达式?

regex pcre
4个回答
1
投票

假设您使用的是 PCRE 正则表达式,我们可以在这里尝试使用

\K
开关:

COOKIE=[^|]*?\KtestCookie=.*?;

演示

这个模式说匹配:

  • COOKIE=
  • [^|]*?
    匹配所有内容而不跨越
    |
    部分边界
  • \K
    重置比赛
  • testCookie=.*?;
    然后匹配目标
    testCookie=
    入口

0
投票

Lookbehind 和 Lookahead 断言应该在这里工作。

(?<=COOKIE=")[\s\S]*(?=")
  • (?<=COOKIE=")
    看在前面
    'COOKIE="'
    .
  • [\s\S]
    匹配任何字符。
  • *
    匹配
    [\s\S]
    0次或更多次。
  • (?=")
    向后看
    "
    .

希望这有帮助。


0
投票

没有环顾四周:

COOKIE="[^"]*(testCookie=\d+;)
  • COOKIE="
    - 文字匹配
  • [^"]*
    - 除了
    "
    零次或多次
  • (
    - 捕获组开始
    • testCookie=
      - 文字匹配
    • \d+;
      - 一个或多个数字后跟文字
      ;
  • )
    - 捕获组结束

演示


0
投票

这会返回你想要的东西

/(?<=COOKIE=")[^;]*/

在这里验证

© www.soinside.com 2019 - 2024. All rights reserved.