gpt4 book ai didi

regex - 为什么 Perl regex\K 不排除在\K 之前匹配的模式?

转载 作者:行者123 更新时间:2023-12-02 16:34:38 24 4
gpt4 key购买 nike

我有一个名为 test.txt 的文件,其中包含以下内容:

> Last login: Mon Jul 13 05:09:33 2020 You have mail.   
> ******************************
> cat, you have just logged into machine sampleserver2
> ******************************
>
> --------------------------------------------------------------
> | To switch environments later, run: |
> | |
> | change |
> | |
> --------------------------------------------------------------
>
>
> Current Dir => /apps/users/cat Oracle SID: SAMPLE
> cat@sampleserver2:

我尝试运行下面的命令只返回最后一个冒号,但它返回整行。据我了解,它应该只返回 : 而不是 cat@sampleserver2:。我究竟做错了什么?我还在使用应该能够处理此问题的 Perl 版本。

cat test.txt | perl -ne 'print if /.+@.+\K:/'
cat@sampleserver2:
% perl -v 
This is perl 5, version 30, subversion 1 (v5.30.1) built for
x86_64-linux-ld

最佳答案

你可能想说:

perl -ne 'print $& if /.+@.+\K:/' test.txt

哪些输出:

:
  • print if CONDITION 语句等同于print $_ if CONDITION,如果条件满足,则只打印 修改的行。请改用$&
  • 第二个参数 cat@sampleserver2: 会导致错误提示“无法打开 cat@sampleserver2::没有那个文件或目录。”

关于regex - 为什么 Perl regex\K 不排除在\K 之前匹配的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62886586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com