我已經使用正則表達式編寫了一個基本程序。 但是,整條線被返回而不是匹配的部分。僅提取模式匹配文本
我只想提取數字。
use strict;
use warnings;
my $line = "ABMA 1234";
$line =~ /(\s)(\d){4}/;
print $line; #prints *ABMA 1234*
我的正則表達式是否正確?
我已經使用正則表達式編寫了一個基本程序。 但是,整條線被返回而不是匹配的部分。僅提取模式匹配文本
我只想提取數字。
use strict;
use warnings;
my $line = "ABMA 1234";
$line =~ /(\s)(\d){4}/;
print $line; #prints *ABMA 1234*
我的正則表達式是否正確?
您可以用相應的值代替精確值。而你的文字不會刪除\w
;
use strict;
use warnings;
my $line = "ABMA 1234";
$line=~s/([A-z]*)\s+(\d+)/$2/;
print $line; #prints only 1234
如果要值存儲在新的字符串,然後
(my $newstring = $line)=~s/([A-z]*)\s+(\d+)/$2/;
print $newstring; #prints only 1234
就試試這個:
如果你想打印1234,你需要改變你的正則表達式並打印第二節比賽:
use strict;
use warnings;
my $line = "ABMA 1234";
$line =~ /(\s)(\d{4})/;
print $2;
字符類'[A-z]'包括'''''''','''''''''',''''以及大寫和小寫英文字母。你需要'[A-Za-z]'或者[[:alpha:]]或者'\ p {PosixAlpha}',這兩者都需要'/ a'修飾符來防止匹配非ASCII字母。 – Borodin
是的,謝謝你指出這一點。當然,我會更新。 – ssr1012