java 正则表达式 提取两个字符串中的字符串

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>里面的这个测试两个字

第1个回答  推荐于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));
}本回答被提问者采纳
第2个回答  2009-10-09
唉,正则表达式学得不多,你可以把结果先搜出来,然后用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);
}

}
}
第3个回答  2009-10-09
只要不将不需要的标记出来就行了···
也就是说不要将后面不需要使用的放在括号中。
括号用于分组和标记。
所谓标记就是用于在后面使用。
第4个回答  2009-10-08
\<td class\=\'row1\'\>.*(\<\/table\>) 用这个搜索出来,然后replace进行前后字符串替换

java 正则表达式 提取两个字符串中的字符串
如果你需要取的字符串里并不包含其它标签,可以像下面这样做。用[^<>]来否定 如果还需要包含其它标签,就不可以了 Pattern pattern = Pattern.compile("()([^<]+?)()");Matcher matcher = pattern .matcher("er你说什么也学测试");while (matcher.find()) { System.out.println(matcher.group...

正则表达式提取两个字符之间的字符串
([^ ]+?)\/end\/ 注意最前面有一个空格。你要的东西在第一个分组里。PS.你会在java里用正则获取第一个分组吧?下面是一个例子(部分),subjectString是“我 实在 不知道 该 怎么办\/end\/ 了”所在的字符串。List<String> matchList = new ArrayList<String>();try {Pattern regex = Pattern....

java里面如何截取两个关键字中间的字符串?
1.split()+正则表达式来进行截取。将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。String str = "abc,12,3yy98,0";String[] strs=str.split(",");for(int i=0,len=strs.length;i<len;i++){ System.out.println(strs[...

java里面如何截取两个关键字中间的字符串
public class Test { public static void main(String [] args) { String str = "<P>123241422132<\/P>";int beginIdx = str.indexOf("<P>") + "<P>".length();int endIdx = str.indexOf("<\/P>");String str2 = str.substring(beginIdx, endIdx);System.out.println(str2);} }...

java中怎么截取字符串中两个单词中间的字符?
使用正则表达式bread.*?bread去验证,验证成功则将字符串进行replace('bread',''),剩下的字符串就是你要的字符串了,如果正则表达式验证失败则返回none

正则表达式截取两个指定字符串之间的内容?
正则表达式 "value":\\["(.*?)"\\]然后取第一个分组就好了,加个?是懒惰匹配,尽量匹配少的字符

怎么用Java把输入的两串字符串中的数字提取出来,并且将两串数字相乘输出...
解决方案:使用正则表达式抽取数字子串;使用Interger.parse将数字子串转为整数类型;计算两个数字相乘即可;

java正则表达式的怎么提取两个字符之间的值
import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String s = "A876X";\/\/ 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来 \/\/ 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”Patte...

求高人指点:正则表达式提取两个固定字符串之间的所有字符串?
re.search(r'(?<=\\[003\\]).+(?=产品描述)',s)

java 如何获取两个字符串之间的汉字
String regex = "AA(.*)BB";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(str);while (matcher.find()) {System.out.println(matcher.group(1));}}}这个是通过正则表达式获取符合规则的字符串的通用方法。如果有多个符合规则的,可以把输出语句换成集合添加元素。

相似回答