- Java code
import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String str = "第一个:1111<br/>第一个:2222<br/>第二个:3333<br/>"; Pattern p = Pattern.compile("第一个:(.*?)<br/>第二个:(.*?)<br/>"); Matcher m = p.matcher(str); if (m.find()) { System.out.println(m.group(1)); System.out.println(m.group(2)); } }}
我希望拿到2222和3333
结果却不是
请解释一下,并给出能用的表达式
------解决方案--------------------
------解决方案--------------------
你的
Pattern p = Pattern.compile("第一个:(.*?)<br/>第二个:(.*?)<br/>");
从1111就开始匹配了,所以输出
1111<br/>第一个:2222
------解决方案--------------------
支持“福临天下”
------解决方案--------------------
------解决方案--------------------
顶下 关注
------解决方案--------------------
- Java code
String str = "第一个:1111<br/>第一个:2222<br/>第二个:3333<br/>"; Pattern p = Pattern.compile("第一个:1111<br/>第一个:(.*?)<br/>第二个:(.*?)<br/>"); Matcher m = p.matcher(str); if (m.find()) { System.out.println(m.group(1)); System.out.println(m.group(2)); } }
------解决方案--------------------
Pattern p = Pattern.compile("第一个:(\\d*?)<br/>第二个:(\\d*?)<br/>");
把.改成\\d 肯定行
------解决方案--------------------
.的范围太大了 是字符就匹配 打印出来的肯定是一大串字符 而不是楼主要的数字
------解决方案--------------------
Pattern p = Pattern.compile("第一个:([0-9]*?)<br/>第二个:[0-9]*?<br/>");
------解决方案--------------------
如果只是要数字,可以用\\d匹配数字
------解决方案--------------------
同意jeojeo的说法
------解决方案--------------------
------解决方案--------------------