寻找正则表达式解决方案

时间:2013-03-31 14:39:55

标签: regex perl

我正在寻找一个与前两个特定字段匹配的正则表达式(用Perl编写的变量字符串)。在文件中,没有注释#的行以任何字符开头,长度非特定,后跟空格和另一个非特定长度字符串,后跟空格:name info data1 data2 data3

以下仅适用于匹配第二个字段,但我希望前两个字段完全匹配:/^[^#].*\s$INFO\s/其中$INFO="info"。我尝试了以上的变化无济于事。我的第一次尝试就是这样:/^[^#]$NAME\s$INFO\s/如果上述记录为$NAME="name",那对我来说似乎合乎逻辑。

2 个答案:

答案 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'

希望有所帮助。并为我的正则表达法向神道歉。