这个问题在这里已有答案:
我得到了这个正则表达式
(?<=token=)(.*?)(?=;)
?前面的标记是不可量化的
我试图在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
你在token=(.*?)(?=;)
模式中的值是在第一个捕获组中。
您可以将该模式简化为token=([^;]+)
捕获匹配不是分号的组。
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]);
你快到了
token=(.*)(?=;)
将捕获捕获组(.*)
中的令牌。根据您使用的命令/脚本语言,您可以使用反向引用来获取捕获组值。
如果你正在使用JS,那就是这样的
var re = /token=(.*)(?=;)/
var found = 'token=fCMNSX6y85W.7jOzwvpp8GQ; Secure'.match(re);
if (found) {
console.log(found[1])
}
注意found[1]
是该比赛的第一个捕获组。
步骤1
找
^string.+\n.+\n.+\n.+\n.+\n(.+)\n.+\n.+
更换
$1
第2步
找
.*token=(.*?);.*
更换
$1\n