perl如何向左匹配

LiuLinda999 2014-01-03 03:58:05
假设有一字符串#SN123#SVaaa#SN456#SVbbb#SN789#SVccc#SN

如何匹配得到第一个#SV后面的且位于第一个#SN前面的内容aaa

多谢!
...全文
238 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiandingzhe 2014-01-07
  • 打赏
  • 举报
回复
我不喜欢复杂的正则表达式。 你完全可以先找出第一个#SV和#SN在哪里,然后截出来,看有没有你要的东西。
LiuLinda999 2014-01-07
  • 打赏
  • 举报
回复
我之前的问题是截取出来的$fulltestparmdata 中含有“+”等特殊字符,终于知道原因了
LiuLinda999 2014-01-06
  • 打赏
  • 举报
回复
谢谢楼上的指点,终于截取出了想要的内容。 麻烦再看看下面的语句: 我从$fullwaferdata中截取了数据$fulltestparmdata, 本来我是替换这部分的内容,但是发现在$fullwaferdata中根本找不到它。 if (($fullwaferdata =~ /(#SN\s\d+\s\d+\s\d+\n\s$wafer_id\n$parm_seq).*?(#SV(((?<!#SN).)*))#SN/ms) ){ $fulltestparmdata = $2; } if ($fullwaferdata =~ /$fulltestparmdata/ms) { print "Find fulltestparmdata! \n"; } else { print "Not Find fulltestparmdata! \n"; #打印输出的是这句话 }
LiuLinda999 2014-01-06
  • 打赏
  • 举报
回复
求救哈!自己顶一下!
bugs2k 2014-01-03
  • 打赏
  • 举报
回复
$_ = "#SN123#SVaaa#SN456#SVbbb#SN789#SVccc#SN";
/#SV(((?!#SN).)*)#SN/;
print $1;
bugs2k 2014-01-03
  • 打赏
  • 举报
回复
$_ = "#SN123#SVaaa#SN456#SVbbb#SN789#SVccc#SN";
/#SV(((?<!#SN).)*)#SN/;
print $1;

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧