Regex 如何使用正则表达式perl提取字符串之间的CSR文本?

Regex 如何使用正则表达式perl提取字符串之间的CSR文本?,regex,perl,openssl,csr,Regex,Perl,Openssl,Csr,我需要从整个提取的CSR信息中提取主题备选名称。示例如下: 一些文本。。。。。。。。 c9:00:00:00:00:00:00:98:a3:22:4e:68:f0:44: 8a:ef 指数:65537(0x100001) 属性: 请求的延期: X509v3受试者备选名称: DNS:DNSName1234,IP地址:192.168.0.0 签名算法:Sha1WithRSA加密 2e:00:0d:08:ea:04:12:de:58:88:f0:50:72:d5:b3:03:9d:14: e9:d6

我需要从整个提取的CSR信息中提取主题备选名称。示例如下:

一些文本。。。。。。。。
c9:00:00:00:00:00:00:98:a3:22:4e:68:f0:44:
8a:ef
指数:65537(0x100001)
属性:
请求的延期:
X509v3受试者备选名称:
DNS:DNSName1234,IP地址:192.168.0.0
签名算法:Sha1WithRSA加密
2e:00:0d:08:ea:04:12:de:58:88:f0:50:72:d5:b3:03:9d:14:
e9:d6:f2:75:4e:e1:64:57:0e:a8:61:as:55:2e:75:e7:72:0b:
3d:db:a8:49:68:9f:11:b7:5a:a6:6k:49:25:ed:bc:e2:00:00:

一些文本…
这将提取我感知到的您的需求,字符串是预定义的,因此不需要IP地址验证或其他调整:

#!/usr/bin/perl
use strict;
use warnings;

my $out= 'some text........
                  c9:00:00:00:00:00:00:00:98:a3:22:4e:68:f0:44:
                    8a:ef
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Subject Alternative Name:
                DNS:DNSName1234, IP Address: 192.168.0.0
    Signature Algorithm: sha1WithRSAEncryption
        2e:00:0d:08:ea:04:12:de:58:88:f0:50:72:d5:b3:03:9d:14:
        e9:d6:f2:75:4e:e1:64:57:0e:a8:61:as:55:2e:75:e7:72:0b:
        3d:db:a8:49:68:9f:11:b7:5a:a6:6k:49:25:ed:bc:e2:00:00:

some text...';

my ($string) =grep{/DNS:/}split(/\n/,$out);
if($string){ 
$string=~s/^\s+|\s+$//g;
} 
else{
$string =  ' ';
};
print "$string \n";#prints DNS:DNSName1234, IP Address: 192.168.0.0

我认为这将提取您的需求,字符串是预定义的,因此不需要IP地址验证或其他调整:

#!/usr/bin/perl
use strict;
use warnings;

my $out= 'some text........
                  c9:00:00:00:00:00:00:00:98:a3:22:4e:68:f0:44:
                    8a:ef
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Subject Alternative Name:
                DNS:DNSName1234, IP Address: 192.168.0.0
    Signature Algorithm: sha1WithRSAEncryption
        2e:00:0d:08:ea:04:12:de:58:88:f0:50:72:d5:b3:03:9d:14:
        e9:d6:f2:75:4e:e1:64:57:0e:a8:61:as:55:2e:75:e7:72:0b:
        3d:db:a8:49:68:9f:11:b7:5a:a6:6k:49:25:ed:bc:e2:00:00:

some text...';

my ($string) =grep{/DNS:/}split(/\n/,$out);
if($string){ 
$string=~s/^\s+|\s+$//g;
} 
else{
$string =  ' ';
};
print "$string \n";#prints DNS:DNSName1234, IP Address: 192.168.0.0