我需要从多行字符串中提取文本(字符和数字).我尝试过的所有内容都没有删除换行/回车.
这是有问题的字符串:
"\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中运行了这个.
谢谢.
在列表上下文中捕获匹配返回捕获的字符串:
#!/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'