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

安德斯·斯文森(Anders Svensson)

我正在尝试使自己熟悉Perl,以便Terminal(Mac)中进行正则表达式搜索现在,我并不是真的想严格地学习Perl,只是试图找出如何执行一些简单的正则表达式。

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

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

假设我要在此处匹配整个ul标签:

<ul>
 <li>item 1</li>
 <li>item 2</li>
</ul>

我想要:

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

为了进行匹配,我在测试时从一个简单的文本文件中找到了类似的内容(此处以“开始”和“结束”为例,但请提供ul标签的示例

perl -wnE 'say $1 if /(start(.*?)end)/' test.txt 

这匹配一部分,但仅在一行上。令人惊讶的是,在末尾添加s不能使其变为“ dotall”或“单行模式”,它仍然只匹配一行...

为了进行替换,我尝试了如下操作:

perl -pe 's/start(.*?)end/replacement text/'s test.txt

这也不起作用...

巴洛普

好吧,这是一个维基百科页面,用于匹配或替换Perl one的衬纸我在Cygwin中做到了

Perl的行为类似于grep或sed。

/s品牌匹配点新的生产线。

-0777使得应用正则表达式来整个事情,而不是一行行。

\n 也可以匹配新行。

$ echo -e 'a\nb\nc\nd' | perl -0777 -pe 's/.*c//s'

d

user@comp ~
$ echo -e 'a\nb\nc\nd' | perl -pe 's/.*c//s'
a
b

d

这是另一种形式,-ne具有print $1

user@comp ~
$ echo -e 'a\nb\nc\nd' | perl -ne 'print $1 if /(.*c)/s'
c
user@comp ~
$ echo -e 'a\nb\nc\nd' | perl -0777 -ne 'print $1 if /(.*c)/s'
a
b
c
user@comp ~
$

$ echo xxx|perl -lne 'print ""'

Perl等于\ 0或&,即整个匹配为$ _,或者为了能够在文本前后插入空格而没有空格,则$ {_}

$ echo xxx|perl -lne 'print "a${_}${_}a"'
axxxxxxa

$  echo xxx|perl -lpe 's/.*/a${_}${_}a"/'
axxxxxxa"

###一些其他示例

$ cat t.t
<ul>
 <li>item 1</li>
 <li>item 2</li>
</ul>

$ perl -0777 -ne 'print $1 if /\<ul\>(.*?)\<\/ul>/s' t.t

 <li>item 1</li>
 <li>item 2</li>

user@comp ~
$ perl -0777 -ne 'print $1 if /(.*)/s' t.t
<ul>
 <li>item 1</li>
 <li>item 2</li>
</ul>

user@comp ~
$

一个示例的全局示例-ne(将“ if”更改为“ while”):

$ echo -e 'bbb' | perl -0777 -ne 'print $1 while /(b)/sg'
bbb

对于-pe一个,只需g在末尾添加/sg/gs(相同的东西):

$  echo -e 'aaa' | perl -0777 -pe 's/a/z/s'
zaa

user@comp ~
$  echo -e 'aaa' | perl -0777 -pe 's/a/z/sg'
zzz

注意-此问题与/ s和-0777相反

这些print $1示例未显示全部内容。此链接https://dzone.com/articles/perl-as-a-better-grep具有此示例perl -wln -e "/RE/ and print;" foo.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式在Perl中不匹配

来自分类Dev

在Perl中匹配正则表达式的问题

来自分类Dev

正则表达式Perl中的特殊行匹配

来自分类Dev

正则表达式在Perl中不匹配

来自分类Dev

正则表达式与Perl中的标量匹配。

来自分类Dev

* 终端中的正则表达式

来自分类Dev

如何使用正则表达式(在Perl或* nix终端中)匹配庞大语料库中列表中的单词?

来自分类Dev

Perl中的正则表达式

来自分类Dev

Perl中的正则表达式

来自分类Dev

Perl中的正则表达式

来自分类Dev

终端重击-正则表达式不匹配

来自分类Dev

Perl正则表达式:与此匹配,但不匹配

来自分类Dev

如果正则表达式匹配A而不是正则表达式B,则Perl打印

来自分类Dev

如何在Perl中匹配日期---假设UNIX正则表达式与Perl的相同

来自分类Dev

Perl正则表达式:如何在Perl中匹配多个单词?

来自分类Dev

Perl正则表达式无法匹配行尾

来自分类Dev

Perl正则表达式以匹配特殊字符

来自分类Dev

打印正则表达式匹配Perl

来自分类Dev

Perl正则表达式匹配范围太广

来自分类Dev

Perl正则表达式匹配元音和辅音

来自分类Dev

使用正则表达式查找匹配项-Perl

来自分类Dev

Perl正则表达式条件匹配

来自分类Dev

Perl迭代正则表达式匹配项的数量

来自分类Dev

Perl正则表达式与\ w +不匹配

来自分类Dev

Perl删除与正则表达式匹配的多行

来自分类Dev

单个冒号的Perl正则表达式匹配项

来自分类Dev

Perl正则表达式匹配数组

来自分类Dev

Perl正则表达式匹配数字

来自分类Dev

Perl-正则表达式和匹配变量