Как сопоставить ключ, начинающийся с ----- BEGIN PRIVATE KEY ----- в perl? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь сопоставить ключ в следующем формате на языке Perl.

Format => 'Password key1 key2'

key1   =>  Alphanumeric text (ABCD1234)

key2 => -----BEGIN PRIVATE KEY-----ABCDEFG\nasdafasfas\n\safaf\n-----END PRIVATE KEY-----

Я не могу сопоставить этот формат с моим регулярным выражением.

Я попытался сопоставить ключевое слово «Пароль» с ключом1, но не могу сопоставить ключ2, начиная с дефисов.

^\s*Password\s+(\S+)\s+(-----BEGIN PRIVATE KEY-----(\S+)-----END PRIVATE KEY-----)\s*$

Что я делаю не так?

1 Ответ

0 голосов
/ 25 января 2019

Включите переключатель / m и / s.Когда / m включен, $ будет совпадать на новой строке, и, поскольку у вас есть «\ n» в key2, использование $ провалит совпадение.Вы можете сопоставить неподвижный конец строки просто (. +) Или закрепить его с помощью \ 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-----
$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...