首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl正则表达式匹配在我的代码中不起作用

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

Stack Overflow用户
提问于 2015-03-10 02:30:33
回答 1查看 83关注 0票数 3

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

代码语言:javascript
复制
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的所有情况

代码语言:javascript
复制
if($line =~ /(?!ARIZONA)/) {
 print $line,"\n";
}

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

我做错了什么?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-03-10 02:35:26

如果当前位置后面不跟ARIZONA,则匹配(?!ARIZONA);如果任何位置后面不跟ARIZONA,则匹配/(?!ARIZONA)/ (实际上是/\A(?s:.*?)(?!ARIZONA)/)。所有字符串都匹配,因为字符串的末尾永远不会跟ARIZONA

你需要检查所有的位置后面都没有跟上ARIZONA。你想要的是

代码语言:javascript
复制
if ($line =~ /^(?:(?!ARIZONA).)*\z/s) {

你想要的

代码语言:javascript
复制
if ($line !~ /ARIZONA/) {
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28949282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档