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

尼特什

我有以下代码

$str = "
   OTNPKT0553 04-02-03 21:43:46

M  X DENY

   PLNA

   /*Privilege, Login Not Active*/

;";

$val = $str =~ /[

]*([\n]?[\n]+
[\n]?)   ([^;^
]+)/s;

print "$1 and $2";

获取输出为

and PLNA

为什么它PLNA作为输出获得我认为应该从一开始就停止\n我认为输出应该是OTNPKT0553 04-02-03 21:43:46

磨坊主

您的正则表达式很杂乱,并且包含很多冗余。以下步骤演示了如何简化它,然后变得更清楚为什么匹配PLNA

1)在您的正则表达式中转换字面换行:

$val = $str =~ /[\n\n]*([\n]?[\n]+\n[\n]?)   ([^;^\n]+)/s;

2)然后简化此代码以消除冗余:

$val = $str =~ /(\n{2})   ([^;^\n]+)/s;

因此,基本上,正则表达式正在寻找两行后跟3个空格的新行。

之前有三个空格OTNPKT0553,但是只有一行新行,因此不会匹配。

接下来的三个空格在PLNAIS之前加上两个新行,因此匹配。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

perl正则表达式匹配问题

来自分类Dev

正则表达式在Perl中不匹配

来自分类Dev

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

来自分类Dev

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

来自分类Dev

正则表达式在Perl中不匹配

来自分类Dev

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

来自分类Dev

Perl 正则表达式问题

来自分类Dev

perl 脚本中的正则表达式问题

来自分类Dev

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

来自分类Dev

Python中的正则表达式匹配问题

来自分类Dev

Python中的正则表达式匹配问题

来自分类Dev

Perl中的正则表达式

来自分类Dev

Perl中的正则表达式

来自分类Dev

Perl中的正则表达式

来自分类Dev

正则表达式中的问题

来自分类Dev

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

来自分类Dev

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

来自分类Dev

正则表达式匹配问题,匹配太多

来自分类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 +不匹配