java 正则表达式 提取两个字符串中的字符串
Patternpattern=Pattern.compile("(<tdclass='row[0-9]'>)(.+?)(</table></p><hr>)");Match...
Pattern pattern = Pattern.compile("(<td class='row[0-9]'>)(.+?)(</table></p><hr>)");
Matcher matcher = pattern
.matcher("er<td class='row1'>你说什么<td class='row1'>也学<td class='row1'>测试</table></p><hr>");
while (matcher.find()) {
System.out.println(matcher.group(2));
}
这样写的话里面多了几个<td class='row1'>,我只想取
<td class='row1'>和</table></p><hr>中间的字符串,但中间不能包含
<td class='row1'>,
如果用 Pattern pattern = Pattern.compile("(<td class='row[0-9]'>){1}(.+?)(</table></p><hr>)");
又取不到。。。。
关键是我只想取道<td class='row1'>测试</table></p><hr>里面的这个测试两个字 展开
Matcher matcher = pattern
.matcher("er<td class='row1'>你说什么<td class='row1'>也学<td class='row1'>测试</table></p><hr>");
while (matcher.find()) {
System.out.println(matcher.group(2));
}
这样写的话里面多了几个<td class='row1'>,我只想取
<td class='row1'>和</table></p><hr>中间的字符串,但中间不能包含
<td class='row1'>,
如果用 Pattern pattern = Pattern.compile("(<td class='row[0-9]'>){1}(.+?)(</table></p><hr>)");
又取不到。。。。
关键是我只想取道<td class='row1'>测试</table></p><hr>里面的这个测试两个字 展开
推荐于2016-04-03
展开全部
如果你需要取的字符串里并不包含其它标签,
可以像下面这样做。
用[^<>]来否定
如果还需要包含其它标签,就不可以了
Pattern pattern = Pattern.compile("(<td class='row[0-9]'>)([^<]+?)(</table></p><hr>)");
Matcher matcher = pattern
.matcher("er<td class='row1'>你说什么<td class='row1'>也学<td class='row1'>测试</table></p><hr>");
while (matcher.find()) {
System.out.println(matcher.group(2));
}
可以像下面这样做。
用[^<>]来否定
如果还需要包含其它标签,就不可以了
Pattern pattern = Pattern.compile("(<td class='row[0-9]'>)([^<]+?)(</table></p><hr>)");
Matcher matcher = pattern
.matcher("er<td class='row1'>你说什么<td class='row1'>也学<td class='row1'>测试</table></p><hr>");
while (matcher.find()) {
System.out.println(matcher.group(2));
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
唉,正则表达式学得不多,你可以把结果先搜出来,然后用replace替换
代码:
public class ClientApp {
public static void main(String[] args)
{
Pattern pattern = Pattern
.compile("(<td class='row[0-9]'>)(.+?)(</table></p><hr>)");
Matcher matcher = pattern
.matcher("er<td class='row1'>你说什么<td class='row1'>也学<td class='row1'>测试</table></p><hr>");
while (matcher.find()) {
System.out.println(matcher.group(2));
String temp = matcher.group(2).toString();
temp = temp.replaceAll("<td class='row1'>", "");
System.out.println("temp:"+temp);
}
}
}
代码:
public class ClientApp {
public static void main(String[] args)
{
Pattern pattern = Pattern
.compile("(<td class='row[0-9]'>)(.+?)(</table></p><hr>)");
Matcher matcher = pattern
.matcher("er<td class='row1'>你说什么<td class='row1'>也学<td class='row1'>测试</table></p><hr>");
while (matcher.find()) {
System.out.println(matcher.group(2));
String temp = matcher.group(2).toString();
temp = temp.replaceAll("<td class='row1'>", "");
System.out.println("temp:"+temp);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要不将不需要的标记出来就行了···
也就是说不要将后面不需要使用的放在括号中。
括号用于分组和标记。
所谓标记就是用于在后面使用。
也就是说不要将后面不需要使用的放在括号中。
括号用于分组和标记。
所谓标记就是用于在后面使用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
\<td class\=\'row1\'\>.*(\<\/table\>) 用这个搜索出来,然后replace进行前后字符串替换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询