相关疑难解决方法(0)

Perl 与终端中的正则表达式匹配?

我试图让自己稍微熟悉Perl,以便在终端(Mac) 中进行正则表达式搜索。现在,我并不是真的想认真学习 Perl,只是想找出如何做一些简单的正则表达式。

但我不知道如何在终端中做到这一点:

我希望能够在多行中匹配表达式,我将以HTML标签为例。请注意,HTML 标记只是要匹配的内容的一个示例,特别是跨越多行的内容。将 HTML 与正则表达式匹配是否是一个好主意不是问题。我只是想了解命令行中与Perl匹配的语法!

假设我想在这里匹配整个ul标签:

<ul>
 <li>item 1</li>
 <li>item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要:

  1. 能够在文件中匹配它并将匹配输出到标准输出(不要问为什么,我只想了解它是如何工作的:-))
  2. 可以用别的东西代替。

为了匹配,我发现了这样的东西(在我测试时,这里使用了一个简单的文本文件中的“开始”和“结束”作为示例,但请给出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)

这也不起作用...

regex perl terminal.app

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

perl ×1

regex ×1

terminal.app ×1