public static void main(String[] args) {
// (?<=A)B(?=C) 模式
// 查找"以A开始,以C结束,中间含B的字符串",然后匹配出B
String input="<html>xxxxx</html>";
Pattern p=Pattern.compile("(?<=<(\\w+)>).*(?=<\\/\\1>)");
Matcher m=p.matcher(input);
System.out.println(m.find());
System.out.println(m.group());
}
异常: Look-behind group does not have an obvious maximum length
网上搜集到的相关帖子:
http://www.bennadel.com/blog/1132-REMatchGroup-UDF-To-Return-Only-Specified-Group-In-RegEx-Pattern.htm
http://stackoverflow.com/questions/1971652/existence-of-obvious-maximum-length-of-look-behind-group-in-java
http://stackoverflow.com/questions/1536915/regex-look-behind-without-obvious-maximum-length-in-java
解决办法: (Integer.MAX_VALUE-1)替换成具体数字也行
Pattern p=Pattern.compile("(?<=<(\\w{0,"+(Integer.MAX_VALUE-1)+"})>).*(?=<\\/\\1>)");
1. 为什么是"Integer.MAX_VALUE-1",而不是"Integer.MAX_VALUE".还不是很清楚,后面再查资料
2. (Integer.MAX_VALUE-1)替换成具体数字也行
附:
另外csdn一个帖子,"火龙果"对正则的相关信息作了很好的解释,链接地址为:
http://topic.csdn.net/u/20080325/17/fb7a3e8d-029a-4d8e-89ae-77a9d28ec301.html
据说,"火龙果"的正则很厉害,以后要常去csdn学习正则啊!!
另外一个学习正则的地方:http://www.regexlab.com/zh/regref.htm
分享到:
相关推荐
即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,《正则表达式经典实例》对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括C#、Java、JavaScript、Perl、PHP、...
Java正则表达式在字符串处理和模式匹配中扮演着重要角色。为了帮助准备面试的你更好...通过学习这些问题和解析,你将掌握复杂匹配规则的设计思路和高效字符串处理的技巧,为你在Java正则表达式面试中脱颖而出提供帮助。
Java常见的正则表达式语法
即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...
全书分为三大部分:第一部分主要讲解正则表达式的基础知识,涵盖了常见正则表达式中的各种功能和结构;第二部分主要讲解关于正则表达式的更深入的知识,详细探讨了编码问题、匹配原理、解题思路;第三部分将之前介绍...
对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。 本书的读者对象是对...
精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于...
正则表达式中使用的常见字符: 1) \t:制表符(‘\u0009’). 2) \n:换行(‘\u000A’)。 3) \r:回车(‘\u000d’) 4) …… 除此之外正则表达式中有一些特殊的字符,这些字符在正则表达式中有特殊的用途,如前面介绍...
本书讲解了基于8种常用的...对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。
即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,《正则表达式经典实例》对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括C#、Java、JavaScript、Perl、PHP、...
中国电话号码验证 匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222 正则表达式 "((\d{3,4})|\d{3,4}-)?\d{7,8}(-\d{3})*" ……