我有一個快速的問題..多行匹配PERL
我想匹配一個特定的多線程實例。問題是,當我執行我的代碼時,它只打印我編輯的內容,而不是整個文件。
例如。這是我輸入:
JJJ
1234 123.00 1234.28 123456.00 1234567.72 constant
ld;afksd;l REst of file blah blah blah...rest of file and other info I neeed etc.
我的目標是獲得:
JJJ 1234 123.00 1234.28 123456.00 1234567.72 constant
ld;afksd;l REst of file blah blah blah...rest of file and other info I neeed etc.
所以基本上我只是想與JJJ
或1倍或更大的資本任何其他變化來發出聲音的數據到行字母。
然而,當我這樣做,我只得到這樣的:
JJJ 1234 123.00 1234.28 123456.00 1234567.72 constant
我只得到這一點,只是,而不是其他的信息,我需要的文件中。我知道有一個簡單的解決方案,但我是perl
非常新,並不能完全弄清楚。
這是我的代碼,也許你們中的一些人會有建議。
use File::Slurp;
my $text = read_file('posf.txt');
while ($text =~ /(^[A-Z]+)(\d+.*?\.\d+ Acquired$)/gism) {
$captured = $1." ".$2;
$captured =~ s/\n//gi;
print $captured."\n";
}
任何幫助將是偉大的。我知道我只是告訴程序打印「抓取」,但我無法弄清楚如何讓它打印文件的其餘部分,並將線路放到所需的位置。
我希望我的問題有意義,不難理解,請告知我是否可以進一步查詢。
你能寫出儘可能最小的例子來重現你的錯誤嗎?目前,您在正則表達式中使用單詞「Acquired」,而您的數據中缺少該單詞。 – user4035
即時通訊對不起。....讓我重新發布代碼..我打算切換到常數.. – joshE
使用File :: Slurp; my $ text = read_file('posf.txt'); ($ text =〜/(^[A-Z]+)(dd+.*?\.d + constant $)/ gism){$ text =〜1。「」。$ 2; $($ text =〜/(^[-)) $ captured =〜s/\ n // gi; print $ captured。「\ n」; } – joshE