正则表达式求解

kkhui 2003-04-18 03:18:03
现要完成以下任务:

字符串:
<abc:abc name="name1">content1<abc:def name="test"/></abc:abc><abc:abc name="name2">content2</abc:abc><abc:abc name="name3">content3任意字符</abc:abc>

要分解为:
Match 1:
<abc:abc name="name1">content1<abc:def name="test"/></abc:abc>
Subgroups:
1: name1
2: content1<abc:def name="test"/>

Match 2:
<abc:abc name="name2">content2</abc:abc>
Subgroups:
1: name2
2: content2


Match 3:
<abc:abc name="name3">content3任意字符</abc:abc>
Subgroups:
1: name3
2: content3任意字符


<abc:abc\s*name=['"]([^"']*)['"]\s*>(.*)</abc:abc>
只能得到一个match,其中的(.*)要怎么改才可以呢?

谢谢了先
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Triumph 2003-06-07
  • 打赏
  • 举报
回复
<abc:abc\s*name=['"]([^"']*)['"]\s*>(.*?)</abc:abc>

*:贪婪匹配
*?:非贪婪匹配
kkhui 2003-05-15
  • 打赏
  • 举报
回复
close
kkhui 2003-05-15
  • 打赏
  • 举报
回复
好使,谢谢,好久没来,不好意思
liu22 2003-04-19
  • 打赏
  • 举报
回复
你试试!

#!/usr/bin/perl

$str = '<abc:abc name="name1">content1<abc:def name="test"/></abc:abc><abc:abc name="name2">content2</abc:abc><abc:abc name="name3">content3任意字符</abc:abc>';

print "1: $1\n2: $2\n\n" while $str =~ /<abc:abc\s*name=\"(.*?)\">(.*?)<\/abc:abc>/ig;

37,721

社区成员

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

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