这个perl正则表达式如何匹配?!~
有这样一个串:$a="@#$asdf9_707asdf._kasdf0(_)*";我想匹配其中的asdf9,asdf.和asdf0(怎么办?实际操作时我不知道有三个asd...
有这样一个串:
$a="@#$asdf9_707asdf._kasdf0(_)*";
我想匹配其中的asdf9,asdf.和asdf0(怎么办?
实际操作时我不知道有三个asdf**,能否给个普适点的答案?。。。拜谢啦~~ 展开
$a="@#$asdf9_707asdf._kasdf0(_)*";
我想匹配其中的asdf9,asdf.和asdf0(怎么办?
实际操作时我不知道有三个asdf**,能否给个普适点的答案?。。。拜谢啦~~ 展开
3个回答
展开全部
如果是或者,就用 |
如果是和,就用(.*?)
#!/usr/bin/perl
$a='@#$asdf9_707asdf._kasdf0(_)*';
if($a=~/asdf9|asdf\.|asdf0/)
{
print "能匹配上\n";
}
else
{
print "找不到asdf9 , asdf. ,asdf0其中任何一个\n";
}
#!/usr/bin/perl
$a='@#$asdf9_707asdf._kasdf0(_)*';
if($a=~/(.*?)asdf9(.*?)asdf\.(.*?)asdf0(.*?)/)
{
print "能全部匹配";
}
else
{
print "无法匹配这样的字符串 XXXXXXXasdf9XXXXXasdf.XXXXasdf0XXXXXX\n";
}
如果是和,就用(.*?)
#!/usr/bin/perl
$a='@#$asdf9_707asdf._kasdf0(_)*';
if($a=~/asdf9|asdf\.|asdf0/)
{
print "能匹配上\n";
}
else
{
print "找不到asdf9 , asdf. ,asdf0其中任何一个\n";
}
#!/usr/bin/perl
$a='@#$asdf9_707asdf._kasdf0(_)*';
if($a=~/(.*?)asdf9(.*?)asdf\.(.*?)asdf0(.*?)/)
{
print "能全部匹配";
}
else
{
print "无法匹配这样的字符串 XXXXXXXasdf9XXXXXasdf.XXXXasdf0XXXXXX\n";
}
展开全部
楼上的是找出其中之一呀,楼主要的是同时包含两个句子。
可以这样
perl -n -e 'print if ($_ =~/Barney/ && $_ =~ /Fred/)' test.txt >new.txt
其实这样的实现用awk命令这些很好用。楼主可以学习学习awk sed grep 等命令。
我补充个实例吧。
awk '' test.txt > new.txt
more test.txt | grep Barney | grep Fred >new.txt (这个管道用着很有意思)
都测试了一下,可行
可以这样
perl -n -e 'print if ($_ =~/Barney/ && $_ =~ /Fred/)' test.txt >new.txt
其实这样的实现用awk命令这些很好用。楼主可以学习学习awk sed grep 等命令。
我补充个实例吧。
awk '' test.txt > new.txt
more test.txt | grep Barney | grep Fred >new.txt (这个管道用着很有意思)
都测试了一下,可行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么叫做“想匹配其中的asdf9,asdf.和asdf0“?是欲图替换它们吗?Perl的所谓match,只能match target的一次occur,replace才能replace string中的所有target。
如果只想match,if(/asdf(9|\.|0)/) {....}
如果想替换,s/asdf(9|\.|0)//;
如果只想match,if(/asdf(9|\.|0)/) {....}
如果想替换,s/asdf(9|\.|0)//;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询