我正在尝试使用以下格式的Perl语言的键进行匹配。
Format => 'Password key1 key2'
key1 => Alphanumeric text (ABCD1234)
key2 => -----BEGIN PRIVATE KEY-----ABCDEFG\nasdafasfas\n\safaf\n-----END PRIVATE KEY-----
我无法将此格式与正则表达式匹配。
我尝试匹配关键字'Password'然后匹配key1,但是我不能匹配以连字符开头的key2。
^\s*Password\s+(\S+)\s+(-----BEGIN PRIVATE KEY-----(\S+)-----END PRIVATE KEY-----)\s*$
我在做什么错了?
答案 0 :(得分:0)
打开/ m和/ s开关。打开/ m时,$将在换行符处匹配,并且由于您在key2中使用“ \ n”,因此使用$将使匹配失败。您可以仅用(。+)匹配字符串的结尾,也可以使用\ Z锚定它。
检查一下:
$ export a="Password ABCD1234 -----BEGIN PRIVATE KEY-----ABCDEFG\nasdafasfas\n\safaf\n-----END PRIVATE KEY-----"
$ echo $a | perl -0777 -ne ' /^\s*Password\s+(\S+)\s+(-+BEGIN.+)/ms and print "key1=$1\nkey2=$2" '
key1=ABCD1234
key2=-----BEGIN PRIVATE KEY-----ABCDEFG
asdafasfas
\safaf
-----END PRIVATE KEY-----
$ echo $a | perl -0777 -ne ' /^\s*Password\s+(\S+)\s+(-+BEGIN.+)\Z/ms and print "key1=$1\nkey2=$2" '
key1=ABCD1234
key2=-----BEGIN PRIVATE KEY-----ABCDEFG
asdafasfas
\safaf
-----END PRIVATE KEY-----
$