Java正则表达式
自2002年早期发布的Java 1.4.0以后,Java就内建了正则表达式包,java.util.regex,它的API毫不复杂(可以称得上简单),提供了强大而有创意的功能。对Unicode的支持很棒,文档很清晰,运行速度也很快。它能够用来匹配 CharSequence 对象,所以使用起来非常方便。
正则表达式
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。 简单来说,正则表达式就是一个很牛逼的字符串处理工具。
正则表达式实例
一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 “Hello World” 字符串。 .(点号)也是一个正则表达式,它匹配任何一个字符如:”a” 或 “1”。
匹配两个字符串中间的内容
正则匹配两个字符之间的内容
- 匹配两个字符串A与B之间的内容,不包含A和B
表达式: (?<=A).*?(?=B)
代码如下
public void testNANB(){ String reg = "(?<=A).*?(?=B)"; String temp = "aAabcBc"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(temp); if( matcher.find() ){ System.out.println(matcher.group()); } }
- 匹配两个字符串A与B之间的内容,包含A,不包含B
表达式: A.*?(?=B)
代码如下
public void testANB(){ String reg = "A.*?(?=B)"; String temp = "aAabcBc"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(temp); if( matcher.find() ){ System.out.println(matcher.group()); } }
- 匹配两个字符串A与B之间的内容,不包含A,包含B
表达式: (?<=A).*?B
代码如下
public void testNAB(){ String reg = "(?<=A).*?B"; String temp = "aAabcBc"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(temp); if( matcher.find() ){ System.out.println(matcher.group()); } }
- 匹配两个字符串A与B之间的内容,包含A和B
表达式: A.*?B
代码如下
public void testAB(){ String reg = "A.*?B"; String temp = "aAabcBc"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(temp); if( matcher.find() ){ System.out.println(matcher.group()); } }
注: “ . ”表示任意字符,“ ? ”表示匹配一次或多次,“ ?<=A ” 表示以A开头,“ ?=B ”表示以B结尾