gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:10:55 26 4
gpt4 key购买 nike

任何人都可以帮助我使用这个正则表达式吗?我需要一个表达式来匹配末尾不包含“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/

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