regex - Perl Regex 正则表达式匹配字符串除外,不匹配字符串

标签 regex perl pattern-matching

任何人都可以帮助我使用这个正则表达式吗?我需要一个表达式来匹配末尾不包含“Created”字符串的行。此脚本用于读取某些源代码的标题。

$string = "* JAN-01-2001   bugsbunny     1234     Created Module";
#$string = "* DEC-12-2012   bugsbunny     5678     Modified Module";
if($string =~ /^\*\s+(\w\w\w-\d\d-\d\d\d\d)\s+(\w+)\s+(\d+)\s+(?!Created)/){
    print "$1\n$2\n$3\n$4\n";
} else {
    print "no match\n";
}

当使用第一个 $string 定义时,我需要匹配失败,因为它的末尾有“Created”这个词。使用第二个 $string 定义时,它应该通过,我需要提取日期($1)、用户($2)、更改编号($3)和描述($4)。

上面的表达式不起作用。请问有什么建议吗?

最佳答案

关闭:

/^\*\s+(\w{3}-\d{2}-\d{4})\s+(\w+)\s+(\d+)\s+(?!.*Created)/

您需要在 Created 之前允许任意数量的非换行符,因此 .* .

否则,正则表达式将在匹配 \s+ 时简单地备份一个字符。 ,所以下面的文字是 " Created" ,然后 (?!Created)会匹配。

看到它here ;注意比赛是如何在 Created 前停止一个空格的.

关于regex - Perl Regex 正则表达式匹配字符串除外,不匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14702607/

相关文章:

正则表达式 - 接受 AZ 不包括固定长度的一些字母

python - 使用 re 在日志文件中查找字符串

javascript - 语法错误: unterminated parenthetical for validating the local file path

arrays - 从 perl 中的其他数组中 grep 一个数组

javascript - 在 njs (javascript) 中用连字符拆分驼峰式单词的正则表达式

c# - 应用于 .NET : avoid type checking with pattern matching involves a performance issue? 的清洁代码

java - 用于在 JSON 值中有选择地转义字符的正则表达式

perl - 我应该将继承方法的 perldoc 复制到子类的文档中吗?

bash ;删除一组后缀中的任何一个

powershell - 使用PowerShell从文件中提取模式