gpt4 book ai didi

Perl 正则表达式匹配在我的代码中不起作用

转载 作者:行者123 更新时间:2023-12-01 10:42:28 25 4
gpt4 key购买 nike


我有一个非常大的文件,其中包含如下行:

NO BIOMETRICS: 2000 ARIZONA/PHOENIX[1] {ARIZONA_PHOENIX_1_} AI
NO BIOMETRICS: 2090 ARIZONA/PHOENIX[2] {ARIZONA_PHOENIX_2_INTER} AB
NO BIOMETRICS: 900 TEXAS/DALLAS__1 {TEXAS_DALLAS_1_} NOCRIMINALHIST
NO BIOMETRICS: 0002 ALABAMA/HUNTSVILLE {ALABAMA/HUNTSVILLE} STATEPENITENTIARY

我只想在我的正则表达式不匹配 ARIZONA 时打印


我正在使用以下代码打印我正在处理的行中没有 ARIZONA 的所有情况

if($line =~ /(?!ARIZONA)/) {
print $line,"\n";
}


但这似乎不起作用,它仍然打印其中包含 ARIZONA 的行。

我做错了什么?

谢谢。

最佳答案

如果当前位置后面没有 ARIZONA,则

(?!ARIZONA) 匹配,因此 /(?!ARIZONA)/ ( /\A(?s:.*?)(?!ARIZONA)/) 如果任何位置后面没有 ARIZONA,则有效匹配。所有字符串都匹配,因为字符串末尾永远不会跟在 ARIZONA 之后。

您需要检查是否所有位置后跟 ARIZONA。你是为了

if ($line =~ /^(?:(?!ARIZONA).)*\z/s) {

你想要

if ($line !~ /ARIZONA/) {

关于Perl 正则表达式匹配在我的代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28949282/

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