0

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

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

4

2 回答 2

2

我的第一次尝试是:/^[^#]$NAME\s$INFO\s/

这行不通,因为(从问题中暗示)之前的角色$NAME是 else# 或 nothing。因此,您只需要先删除它[^#]

/^$NAME\s$INFO\s/

哪个将匹配字符串:

"$NAME $INFO <whatever or nothing>"
于 2013-03-31T16:41:55.047 回答
1

虽然我不是正则表达式专家,但这可能有效(我也不清楚问题的确切细节,所以我做了一些假设):

'$NAME=name #$INFO=info $DATA=data1 data2 data3'.replace(/#[\S]+/g,'').match(/\$[\S]+/g);

这将返回一个数组。前 2 个元素是“字段”,即 [0]='$NAME=name' AND [1]='$DATA=data1'

希望这会有所帮助。并为我的正则表达式向众神道歉。

于 2013-03-31T15:20:47.830 回答