正则表达式匹配给定字符串后的文本排除字符本身[重复]

问题描述 投票:1回答:3

这个问题在这里已有答案:

我得到了这个正则表达式

(?<=token=)(.*?)(?=;)

而在https://regex101.com它说

?前面的标记是不可量化的

我试图在token=排除它之前和之前;排除它之前得到字符串

string = [ 'nginx/1.15.2', 'Fri, 22 Feb 2019 22:39:19 GMT', 'application/json', '76', 'close', [ 'token=fCMNSX6y85W.7jOzwvpp8GQ; Secure; HttpOnly; expires=Wed, 21 Oct 2099 04:24:00 GMT' ], 'content-type,cache-control,pragma,x-request-id', 'true' ] '

如果我正在使用这个正则表达式token=(.*?)(?=;)

我得到了token=fCMNSX6y85W.7jOzwvpp8GQ

所以,我需要从这个字符串是fCMNSX6y85W.7jOzwvpp8GQ

javascript regex
3个回答
0
投票

你在token=(.*?)(?=;)模式中的值是在第一个捕获组中。

您可以将该模式简化为token=([^;]+)捕获匹配不是分号的组。

regex101 demo

var s = `string = [ 'nginx/1.15.2',
  'Fri, 22 Feb 2019 22:39:19 GMT',
  'application/json',
  '76',
  'close',
  [ 'token=fCMNSX6y85W.7jOzwvpp8GQ; Secure; HttpOnly; expires=Wed, 21 Oct 2099 04:24:00 GMT' ],
  'content-type,cache-control,pragma,x-request-id',
  'true' ] '`;

var pattern = /token=([^;]+)/;
console.log(s.match(pattern)[1]);

0
投票

你快到了

token=(.*)(?=;)将捕获捕获组(.*)中的令牌。根据您使用的命令/脚本语言,您可以使用反向引用来获取捕获组值。

如果你正在使用JS,那就是这样的

var re = /token=(.*)(?=;)/
var found = 'token=fCMNSX6y85W.7jOzwvpp8GQ; Secure'.match(re);
if (found) {
    console.log(found[1])
}

注意found[1]是该比赛的第一个捕获组。

https://jsfiddle.net/ogj4xpLc/2/


0
投票

步骤1

^string.+\n.+\n.+\n.+\n.+\n(.+)\n.+\n.+

更换

$1

第2步

.*token=(.*?);.*

更换

$1\n
© www.soinside.com 2019 - 2024. All rights reserved.