我正在使用正則表達式來移動文本塊,但它只刪除單行 - 我應該包含哪些內容才能刪除多行?如何在Perl正則表達式中插入多行?
0
A
回答
3
您可能正在尋找/<!--\[perl\](.*?)-->/s
使用選項開關/s
它把字符串作爲單行。
「。」 (點)將匹配任何字符,包括換行符。
2
有兩件事情在嘗試讓多個正則表達式在多行中工作時經常會讓人們絆倒。
第一個事實是,除非您在m//
或s///
運算符上使用/s
選項,否則正則表達式中的點不匹配換行符。
第二個是,如果您一次處理文本文件一行(可能是while (<$filehandle>) { ... }
),則每次循環時只有一行文本需要匹配。您需要立即讀取整個文件(可能使用$text = do { local $/; <$filehandle>};
)。
1
#!/usr/bin/env perl
use strict; use warnings;
{
local $/ = '-->';
while (my $chunk = <DATA>) {
$chunk =~ s/<!-- \[perl\] (.*) --> \z//sx;
print $chunk;
}
}
__DATA__
<!--[perl]
my $x = 5;
my $y = 3;
say $x + $y
-->
<!--[not]
const char *s = "This is not Perl ;-)";
-->
通過明智地改變input record separator,可以確保每塊你用字符串"-->"
讀取結束。然後,通過向您的替換運算符提供/s
標誌,確保.
可以匹配行結束符。
輸出:
<!--[not] const char *s = "This is not Perl ;-)"; -->
您也可以拆下通往/來自塊尾隨空格,如果該事項。
相關問題
- 1. perl正則表達式多行
- 2. perl正則表達式匹配多行
- 3. 正則表達式在Perl
- 4. Perl正則表達式在\
- 5. 正則表達式在Perl
- 6. Perl正則表達式在@
- 7. 如何在Perl中匹配多個正則表達式?
- 8. 如何使用Perl正則表達式提取多行代碼?
- 9. 正則表達式中的perl正則表達式
- 10. 正則表達式 - 如何在每行之前插入文本?
- 11. 如何在Perl中進行全局正則表達式匹配?
- 12. 在考慮在Perl正則表達式Perl的正則表達式
- 13. perl正則表達式多個組
- 14. 插入正則表達式來格式化日期(Perl)
- 15. 如何Perl遞歸正則表達式
- 16. javascript正則表達式在表達式中插入新元素
- 17. Perl正則表達式在模式匹配之前全局插入換行符
- 18. 多行正則表達式
- 19. 正則表達式,多行
- 20. 多行正則表達式
- 21. 正則表達式多行
- 22. 多行正則表達式
- 23. 插入在正則表達式
- 24. Perl:正則表達式
- 25. perl redirectmatch正則表達式
- 26. Perl的正則表達式
- 27. Perl正則表達式
- 28. Perl正則表達式\ U
- 29. Perl正則表達式
- 30. 用perl正則表達式