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$)"));
求正则完成这个工作
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("没有找到匹配的行");
}
解释
-
正则表达式:
^ALF=
:匹配以ALF=
开头的行。[^;]*
:匹配ALF=
后面直到遇到第一个分号或行尾的所有字符(不包括分号)。(?=;|$)
:这是一个正向肯定断言,表示匹配到一个位置,该位置后面紧跟一个分号或行尾。
-
标志:
m
:多行模式(multi-line),允许^
和$
匹配每一行的开始和结束,而不仅仅是整个字符串的开始和结束。
-
结果:
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
开头的一行字符串。