Pattern pattern=Pattern.compile(".+?(?<=\\d{2})");
String str="abc57ab785bv55555";
Matcher matcher=pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group());
}结果:
abc57
ab78
5
bv55
5
5
5
====================================================================
Pattern pattern=Pattern.compile(".+?(?=\\d{2})");
String str="abc57ab785bv55555";
Matcher matcher=pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group());
}
结果:
abc
57ab
7
85bv
5
5
5我一直分不清这些预搜索
谁给我讲讲这样写有什么区别?
我只能分清把(?<=) 这样的放在左边 (?=) 这样的放在右边
可是现在是把(?<=)放在了右边我就分不清了 谢谢回答!
String str="abc57ab785bv55555";
Matcher matcher=pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group());
}结果:
abc57
ab78
5
bv55
5
5
5
====================================================================
Pattern pattern=Pattern.compile(".+?(?=\\d{2})");
String str="abc57ab785bv55555";
Matcher matcher=pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group());
}
结果:
abc
57ab
7
85bv
5
5
5我一直分不清这些预搜索
谁给我讲讲这样写有什么区别?
我只能分清把(?<=) 这样的放在左边 (?=) 这样的放在右边
可是现在是把(?<=)放在了右边我就分不清了 谢谢回答!
解决方案 »
- Java如何关闭ResultSet后,还能获得记录?
- swing中,KeyStroke类产生的实例是啥意思?
- 矩阵加减乘问题
- java初学者,向各位前辈请教:有关异常处理的问题
- 关于AccessController.doPrivileged
- 怎样给我的Frame加上滑竿
- 两道关于THEARD的问题,谢谢了!
- 展现网络拓扑结构
- 怎样用dom在xml中增加一个节点?
- 我的机器上,访问*.jsp,*.class都可以。但*。HTML就不行了。怎么回事?
- 如何解决:[Microsoft][SQLServer JDBC Driver]Unhandled data type: TDS_INT8
- 如何让JFrame的大小自动变化
String str = "abc57ab344bv22222";
Matcher matcher= pattern.matcher(str)
while(matcher.find())
{System.out.println(matcher.group());}
".+?(?<=\\d{2})"
你只要找到有两个数字就可以了,记住预搜索本身是不在匹配序列里面的
"abc57ab785bv55555"
找到数字57,所以abc57能匹配。.+?是abc57,预搜索能找到57
找到数字78,所以ab78能匹配,.+?匹配ab78,预搜索能找到78
注意,数字85也是能匹配的,因为是预搜索,所以不用考虑8是否已经在前面匹配了,所以这里只是输出5,.+?是5,反向于搜索能找到85,不要认为是从5开始就行了,这就是预搜索
下面的类似,所以有很多单个的5,其实预搜索是搜到两个5的,前面的一个5已经匹配了,所以下一个只输出一个5