regex - Perl 中的正则表达式分组

标签 regex perl

我有变量包含:./EMSautoInstall.pl 第 50 行没有这样的文件或目录。

我想创建一个包含No such file or directory的变量,另一个包含at ./EMSautoInstall.pl line 50.

我的正则表达式是:我的 ( $eStmnt, $lineNO ) = $! =~/(.*[^a][^t])(.*)/;

当我打印两个变量时,第一个包含No such file or directory 但第二个是空的。

为什么会这样?

最佳答案

真的$! 变量中有那个字符串吗?因为通常情况下,at line... 部分是由diewarn 添加的。我怀疑你只是有

$! = "No such file or directory";

你的正则表达式匹配,因为它允许空字符串

/(.*[^a][^t])(.*)/

即第二个捕获也什么都不匹配,第一个捕获可以是任何不以 at 结尾的内容。

确认,

print $!;

应该打印No such file or directory

关于regex - Perl 中的正则表达式分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317796/

相关文章:

regex - 在 Notepad++ 中寻求正则表达式以仅在两个引号 ["] 之间搜索和替换 CRLF

perl - 从单个目录中删除具有重复内容的文件 [Perl 或算法]

perl - 如何在 Perl 中安装 Parallel::ForkManager?

perl - 为什么Perl不让我从后缀比较中链接后缀循环?

javascript - 电话号码验证 Javascript

javascript,判断val是否为单个数字的最佳方法

regex - paper-input-container 中的 pattern 属性是什么?

arrays - 包含在数字范围内的组哈希键

regex - Perl 使用正则表达式捕获带有日志的组

c# - 正则表达式组不返回预期值