我试图让自己稍微熟悉Perl,以便在终端(Mac) 中进行正则表达式搜索。现在,我并不是真的想认真学习 Perl,只是想找出如何做一些简单的正则表达式。
但我不知道如何在终端中做到这一点:
我希望能够在多行中匹配表达式,我将以HTML标签为例。请注意,HTML 标记只是要匹配的内容的一个示例,特别是跨越多行的内容。将 HTML 与正则表达式匹配是否是一个好主意不是问题。我只是想了解命令行中与Perl匹配的语法!
假设我想在这里匹配整个ul标签:
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想要:
为了匹配,我发现了这样的东西(在我测试时,这里使用了一个简单的文本文件中的“开始”和“结束”作为示例,但请给出ul标签的示例:
perl -wnE 'say $1 if /(start(.*?)end)/' test.txt
Run Code Online (Sandbox Code Playgroud)
这匹配一个部分,但只在一行上。令人惊讶的是,在末尾添加 s 并不能使其成为“dotall”或“单行模式”,它仍然只匹配一行......
为了更换,我尝试了这样的事情:
perl -pe 's/start(.*?)end/replacement text/'s test.txt
Run Code Online (Sandbox Code Playgroud)
这也不起作用...