我是perl的新手,編寫我的第幾個程序並使用它的模式匹配功能。我讀入文件到陣列是這樣的:在perl模式匹配..如何從模式中排除 n字符
@list=<file>
然後通過$列表[0..9]等,並且當我匹配一個圖案,所述$list[0]
包括\n
字符,因此索引陣列的每一行比賽失敗。因此,如果($string =~ $list[0])
雖然沒有\n
字符,但它會匹配。
如何告訴模式匹配器不考慮模式中的\n
字符?
感謝
我是perl的新手,編寫我的第幾個程序並使用它的模式匹配功能。我讀入文件到陣列是這樣的:在perl模式匹配..如何從模式中排除 n字符
@list=<file>
然後通過$列表[0..9]等,並且當我匹配一個圖案,所述$list[0]
包括\n
字符,因此索引陣列的每一行比賽失敗。因此,如果($string =~ $list[0])
雖然沒有\n
字符,但它會匹配。
如何告訴模式匹配器不考慮模式中的\n
字符?
感謝
如果你想刪除您行你可以在\n
:
chomp $list[0]
看到perldoc -f chomp
的細節。
這將匹配與\n
:
if ($list[0] =~ "$string\n")
或者,如果你想成\ n是可選:
if ($list[0] =~ /$string\n?/)
這是一個很好的機會去了解Perl如何模塊的工作。
例如,您可以使用Perl6::Slurp這將既a)解析文件b)將內容放入數組c)爲您刪除換行符。
例如:
use Perl6::Slurp;
my @lines = slurp '<:utf8', 'filename', {chomp=>"\n"}
一個典型的正則表達式將不考慮默認的換行符。例如,'/ foo /'或甚至'/^foo $ /'。告訴我們你的正則表達式。否則,我們可以給出的唯一建議是(1)從字符串中刪除換行符,或者(2)向正則表達式添加換行符。 – FMc