JAVA正则表达式

Java正则表达式通过回溯与前后查找提取标签中的内容

泪湿孤枕 提交于 2019-12-10 05:22:28
在说具体的内容之前先来了解一下什么是向前查找,向后查找与回溯。我们通过一下小的例子来理解一下。具体的代码附录在最后。 ##向前查找 Java中向前查找的正则表达式是(?=),更加具体的就是 要匹配内容的正则(?=匹配的边界的正则) 。来一个具体的例子,比如我们有一个具体的字符串 2016年:鸡翅 15元 鸡腿 10元 鸡爪 5元 ,现在我们要取出里面的价格15 10 5,而不要2016,显然我们不能直接\d+来匹配。 我们很容易发现规律,我们需要提取单位‘元’前面的数字,但是我们不想要单位‘元’,怎么办,这里就可以使用向前查找了。 content = "2016年:鸡翅 15元 鸡腿 10元 鸡爪 5元"; //正则表示,匹配元前面的数字,以元作为数字的后边界但是不匹配‘元’ regex = "\\d+(?=元)"; 匹配的结果就是15 10 5,不包含2016,后面有代码可以自己测试一下。 ##向后查找 首先向后查找的正则表达式是(?<=),更加具体的就是*(?<=匹配边界的正则)要匹配内容的正则*,向后查找和向前查找一样,只不过是匹配边界后面的内容。下面还是通过一个具体的例子来说明。比如我有一个url字符串: http://www.freemethod.cn,我想提取出www.freemethod.cn。要真么做了。这里就可以使用向后匹配。当然你说我有一万种方法可以完成这个事情

JAVA正则表达式(详细,转载内容)

浪子不回头ぞ 提交于 2019-11-30 19:05:14
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。   可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛。   正则表达式的引擎已被许多普通的Unix工具所实现,包括grep,awk,vi和Emacs等。此外,许多使用比较广泛的脚本语言也支持正则表达式,比如Python,Tcl,JavaScript,以及最著名的Perl。   我很早以前就是个Perl方面的黑客,如果你和我一样话,你也会非常依赖你手边的这些强大的text-munging工具。近几年来,像其他程序开发者一样,我也越来越关注Java的开发。   Java作为一种开发语言,有许多值得推荐的地方,但是它一直以来没有自带对正则表达式的支持。直到最近,借助于第三方的类库,Java开始支持正则表达式,但这些第三方的类库都不一致、兼容性差,而且维护代码起来很糟糕。这个缺点,对我选择Java作为首要的开发工具来说,一直是个巨大的顾虑之处。   你可以想象,当我知道Sun的Java JDK 1.40版本包含了java.util.regex(一个完全开放