正则表达式匹配给定字符串之后的文本,字符本身除外

时间:2019-02-23 07:10:31

标签: javascript regex

我有这个正则表达式

(?<=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

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

第1步

查找

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

替换

$1

第二步

查找

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

替换

$1\n

答案 2 :(得分: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]);