请问在Perl环境下,如何通过正则表达式在多行记录中查找出包含字符串A但是不包含字符串B的内容。

举例如下:iamamaniamateacheriamafootballplayersheisagirl如何通过正则表达式找出包含“iam”,但是不包含“player”的记... 举例如下:
i am a man
i am a teacher
i am a football player
she is a girl

如何通过正则表达式找出包含“i am”,但是不包含“player”的记录,也就是说通过正则表达式查出以下结果:
i am a man
i am a teacher
有没有一行就能表达出来的方式……
展开
 我来答
己闻楣Sx
2011-04-28 · TA获得超过1935个赞
知道大有可为答主
回答量:1057
采纳率:93%
帮助的人:912万
展开全部
^((?!i[ \t]+am|player).)+i[ \t]+am((?!player).)+$
如果需要排除的player一定在行尾,一楼的答案也行,要是不限定在尾部,任何位置的都不行(比如甚至在i am之前),就得用这个。
关键解释:(?!xxx)——当前位置不是xxx;((?!xxx).)+——当前位置以后一直没有xxx。
百度网友d44faec
2011-04-28 · TA获得超过640个赞
知道小有建树答主
回答量:699
采纳率:0%
帮助的人:186万
展开全部
#!perl
#
open FILE, "fortest.txt";
while (<FILE>)
{
$line = $_;
print $line;
if($line =~ /.*a.*/ && $line !~ /.*b.*/)
{
$temp .= $line;
}
}
close FILE;

open FILE, ">new.txt";
print FILE $temp;
close FILE;
已测试,可以实现功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ehdy
2011-04-29 · TA获得超过4638个赞
知道小有建树答主
回答量:1454
采纳率:77%
帮助的人:856万
展开全部
while(<>){print $_ if (/i am/ && !/player/)};

保存为check.pl

check.pl 1.txt

输出结果:
i am a man
i am a teacher

因为有先后顺序的问题,貌似一句话没有办法满足。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Anthony_TECH
2011-04-28
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
#!/usr/bin/perl
#Define develop information here
$ApplicationVerion="1.0";

#Import additional module here
use Getopt::Std;

#Generate application run time variable here
$ApplicationExecutePathAndName=$0;

#Define global constant here
$DataFile="./DataFile.txt";
#Define global variable here

#Define function here

#Main code start here
open(FILE, $DataFile) || die "can not open the file: $DataFile";
while (defined ($Eachline =<FILE>))
{
chomp $Eachline;
if($Eachline=~/i am/)
{
if($Eachline!~/play/)
{
print $Eachline."\n";
}
}
}
close FILE;
#Main code end here
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ebcd94805
2011-04-28 · TA获得超过667个赞
知道小有建树答主
回答量:552
采纳率:0%
帮助的人:485万
展开全部
@result = $subject =~ m/^i\sam.+(?<!player)$/mg;
追问
能解释一下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lib_sky861212
2011-05-13
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
/i am/ && !/player/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式