在Perl中,如何从包含回车符和换行符的字符串中捕获一串数字?

Mel*_*Mel 0 regex perl

我需要从多行字符串中提取文本(字符和数字).我尝试过的所有内容都没有删除换行/回车.

这是有问题的字符串:

"\r\n        50145395\r\n    "
Run Code Online (Sandbox Code Playgroud)

在HEX中它是:0D 0A 20 20 20 20 20 20 20 20 35 30 31 34 35 33 39 35 0D 0A 20 20 20 20

我尝试过以下方法:

$sitename =~ m/(\d+)/g;  
$sitename = $1;  
Run Code Online (Sandbox Code Playgroud)

$sitename =~ s/^\D+//g;  
$sitename =~ s/\D+$//g;  
Run Code Online (Sandbox Code Playgroud)

$sitename =~ s/^\s+//g;  
$sitename =~ s/\s+$//g;  
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我都无法摆脱任何不需要的角色.我在cygwin perl和Strawberry perl中运行了这个.

谢谢.

Sin*_*nür 5

在列表上下文中捕获匹配返回捕获的字符串:

#!/usr/bin/perl

use strict; use warnings;

my $s = join('', map chr(hex), qw(
    0D 0A 20 20 20 20 20 20 20 20 35 30 
    31 34 35 33 39 35 0D 0A 20 20 20 20
));

my ($x) = $s =~ /([A-Za-z0-9]+)/;

print "'$x'\n";
Run Code Online (Sandbox Code Playgroud)

输出:

C:\Temp> uio
'50145395'