这个正则表达式怎么写?
string str="dfdf<tr>hkhk</tr>kkjhdijhfi<td>ddd</td>ddd<tr>dfdf</tr>dd<tr>jjj</tr>gg<td>cc</td>bb<tr>dffdf</tr>fdfdf"
我想把<tr></tr>中间的字符提出来存到数组中,正则表达式怎么写?程序怎么写?
问题点数:100、回复次数:8Top
1 楼saucer(思归)回复于 2002-06-05 08:29:32 得分 75
try something like this (you need j2sdk1.4.0 or above):
import java.util.regex.*;
import java.util.*;
class TestReg
{
public static void main (String[] args)
{
String str="dfdf<tr>hkhk</tr>kkjhdijhfi<td>ddd</td>ddd<tr>dfdf</tr>dd<tr>jjj</tr>gg<td>cc</td>bb<tr>dffdf</tr>fdfdf";
Pattern p = Pattern.compile("<tr>([^<]+)</tr>");
Matcher m = p.matcher(str);
ArrayList a = new ArrayList();
while (m.find())
{
a.add(m.group(1));
}
String[] s = new String[a.size()];
a.toArray(s);
for (int i=0; i < s.length; i++)
System.out.println(s[i]);
}
}Top
2 楼taolei(实在无聊)回复于 2002-06-05 08:38:49 得分 0
我认为不可能直接提取出来:
你有没有考虑过,<tr></tr>之间还可能存在table?
如:
<tr> <table><tr><td>xx</td></tr></table> </tr>
Top
3 楼leo_zhangfh(无为)回复于 2002-06-05 10:04:05 得分 0
focusTop
4 楼press()回复于 2002-06-05 16:38:53 得分 0
如果有<table>该怎么处理呢?
Top
5 楼gdsean(摇滚java)回复于 2002-06-05 16:57:45 得分 25
Pattern p = Pattern.compile("<tr>([^<]+)</tr>+?");
有<table>的情况也装到数组里面去
那要看你的要求是怎么样的了Top
6 楼press()回复于 2002-06-05 19:20:16 得分 0
如果我要<tr></tr>中间的东西
但是<tr></tr>中间的别的<>又不要该怎么做
例如<tr><table>hi</table></tr>hello<tr>good</tr>
还有就是象taolei(实在无聊) 提出的那样Top
7 楼saucer(思归)回复于 2002-06-05 19:38:59 得分 0
try
Pattern p = Pattern.compile("<tr>(.+?)</tr>");
if you want something like taolei(实在无聊) 提出的那样, then it is very hard, since the content has <tr></tr> in itTop
8 楼cfww()回复于 2002-06-05 20:25:17 得分 0
use stack!Top




