一个正则表达式的问题。

shengjie 2006-11-04 04:55:54
String form="asdfasdf<FORM><tt>bbb</tt><aa>bbbbbb</aa></FORM>asdasdf<FORM><TT>AASF</TT><DD>AA</DD></FORM></INF_PUNISH>";
String tt="";
Matcher m = Pattern.compile("(\\w)<FORM>(.*)</FORM>(\\w)").matcher(form.toUpperCase());
//Matcher m = Pattern.compile("(?:<form>)((\\n|\r|.)*?)(?:</form>)").matcher(form.toLowerCase());
while(m.find())
{
System.out.println(m.group(2));
}
System.out.println(tt);

我想得到<form></form>标签中的字符串。可是我写的这个只能得到最有一个。请大家帮忙看看错在什么地方。

我需要返回的字符串应该是“<tt>bbb</tt><aa>bbbbbb</aa>”和“<TT>AASF</TT><DD>AA</DD>”。
...全文
127 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
边城狂人 2006-11-04
  • 打赏
  • 举报
回复
注意,改了这几个地方:
1. compile的时候给一个Pattern.CASE_INSENSITIVE,就可以不区分大小写。
2. \\w只代表一个[a-zA-Z0-9]的字母,如果加*表示0个或者多个
3. .*?表示非贪心的匹配,不然就会把中间的</FORM>和<FORM>也配置进去。
边城狂人 2006-11-04
  • 打赏
  • 举报
回复
import java.util.regex.*;

public class Test {

public static void main(String[] args) {
String form="asdfasdf<FORM><tt>bbb</tt><aa>bbbbbb</aa></FORM>asdasdf<FORM><TT>AASF</TT><DD>AA</DD></FORM></INF_PUNISH>";
String tt="";
Matcher m = Pattern.compile("(\\w)*<FORM>(.*?)</FORM>(\\w)*", Pattern.CASE_INSENSITIVE).matcher(form);
//Matcher m = Pattern.compile("(?:<form>)((\\n|\r|.)*?)(?:</form>)").matcher(form.toLowerCase());
while (m.find()) {
System.out.println(m.group(2));
}
System.out.println(tt);
}
}

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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