我正在寻找一个与前两个特定字段匹配的正则表达式(用Perl编写的变量字符串)。在文件中,没有注释#
的行以任何字符开头,长度非特定,后跟空格和另一个非特定长度字符串,后跟空格:name info data1 data2 data3
。
以下仅适用于匹配第二个字段,但我希望前两个字段完全匹配:/^[^#].*\s$INFO\s/
其中$INFO="info"
。我尝试了以上的变化无济于事。我的第一次尝试就是这样:/^[^#]$NAME\s$INFO\s/
如果上述记录为$NAME="name"
,那对我来说似乎合乎逻辑。
答案 0 :(得分:2)
我的第一次尝试是:/ ^ [^#] $ NAME \ s $ INFO \ s /
这不起作用,因为(问题暗示)$NAME
之前的字符是#
或者没有。因此,您只需删除第一个[^#]
:
/^$NAME\s$INFO\s/
哪个匹配字符串:
"$NAME $INFO <whatever or nothing>"
答案 1 :(得分:1)
虽然我不是正则表达式专家,但这可能有用(我也不清楚问题的确切细节所以我做了一些假设):
'$NAME=name #$INFO=info $DATA=data1 data2 data3'.replace(/#[\S]+/g,'').match(/\$[\S]+/g);
这将返回一个数组。前两个元素是'字段',即[0] ='$ NAME = name'AND [1] ='$ DATA = data1'
希望有所帮助。并为我的正则表达法向神道歉。