Nodejs 求正则匹配一行数据

Nodejs 求正则匹配一行数据

U_TRS1=000000a8.c806787c.51d722dc.b3c448d5; path=/; expires=Mon, 03-Jul-23 19:47:40 GMT; domain=.sina.com.cn U_TRS2=000000a8.c812787c.51d722dc.2dc642a0; path=/; domain=.sina.com.cn SUS=SID-1732181301-1373053660-JA-i687l-43ba25d4105f398433583b51158d83c2; path=/; domain=.weibo.com; httponly ALF=1375645660; expires=Sun, 04-Aug-2013 19:47:40 GMT; path=/; domain=.weibo.com SSOLoginState=1373053660; path=/; domain=.weibo.com USRUG=usrmdins413_202; path=/

我有一个文件,文件内容如上所示,文件里以 \n 做为换行符,我现在想匹配出以 ALF 开头的一行字符串,怎么做,我尝试了好几个都失败了

var fs = require(‘fs’); var get_cookie = fs.readFileSync(cookie_file, ‘utf8’); var A = get_cookie.match(new RegExp("(^| )ALF=([^;]*)(\n$)"));

求正则完成这个工作


6 回复

Node.js 正则匹配一行数据

假设你有一个包含多行cookie信息的文件,并且你想匹配出以 ALF 开头的那一行。根据你的描述,文件中的每行数据是以 \n 作为换行符分隔的。

示例代码

const fs = require('fs');

// 读取文件内容
const cookieFile = 'path/to/your/cookie/file.txt';
const getCookie = fs.readFileSync(cookieFile, 'utf8');

// 使用正则表达式匹配以 ALF 开头的行
const alfPattern = /^ALF=[^;]*(?=;|$)/m;
const match = getCookie.match(alfPattern);

if (match) {
    console.log("匹配到的行:", match[0]);
} else {
    console.log("没有找到匹配的行");
}

解释

  1. 正则表达式

    • ^ALF=:匹配以 ALF= 开头的行。
    • [^;]*:匹配 ALF= 后面直到遇到第一个分号或行尾的所有字符(不包括分号)。
    • (?=;|$):这是一个正向肯定断言,表示匹配到一个位置,该位置后面紧跟一个分号或行尾。
  2. 标志

    • m:多行模式(multi-line),允许 ^$ 匹配每一行的开始和结束,而不仅仅是整个字符串的开始和结束。
  3. 结果

    • match 方法返回一个数组,其中第一个元素是完整的匹配字符串(即以 ALF= 开头的整行),如果没有找到匹配项,则返回 null

通过这种方式,你可以轻松地从文件中提取出以 ALF 开头的那行数据。希望这能帮助你解决问题!


var reg = /(alf[^\n]+)/gi;

为什么不需要 $ 符号

因为你是以\n结尾啊,我这个正则就是如果后面有\n那么就停止匹配这一行

/\s+(ALF[^\n]+)/gi

or

/\s+(ALF.*?)\n/gi

要匹配出以 ALF 开头的一行字符串,可以使用以下的正则表达式:

var fs = require('fs');
var cookie_file = 'path/to/your/file'; // 替换成你的文件路径

var get_cookie = fs.readFileSync(cookie_file, 'utf8');

// 使用正则表达式匹配以 ALF 开头的行
var match = get_cookie.match(/(^|\n)ALF=[^\n]*/);

if (match) {
    console.log("匹配到的行:", match[0]);
} else {
    console.log("未找到匹配的行");
}

解释:

  • (^|\n):匹配行的开始或者换行符 \n
  • ALF=:匹配字符串 ALF=
  • [^\n]*:匹配从 ALF= 开始到下一个换行符 \n 之前的所有字符。

这样,你可以准确地匹配出以 ALF 开头的一行字符串。

回到顶部