(1)Java正则表达式学习

前言

大家都知道在linux shell、perl、python等脚本语言中正本表达式是非常强大的,几乎没有什么事它不能表达的。对于学java的程序员来说,sun退出的java.util.regex这个包也是很强大,下面我来一步步地向大家介绍Java中正则表达式的使用;


基本类

Java正则表达式使用到的类主要是3个(不是很多吧!),这两个的功能如下:

(1)Pattern类:是用来表达和陈述所要搜索模式的对象
(2)Matcher类:是真正影响搜索的对象
(3)PatternSyntaxException类:当遇到不合法的搜索模式时,会抛出例外


代码实例

在接下来的几节,我都会通过一个个的代码实例来一点点介绍Java正则表达式的使用,由复杂到简单,让大家逐步掌握Java正则表达式。
Test1.java
public class Test1 {

	public static void main(String[] args) {
	
		String str = "(222)-123";
		String regEx = "\\(222\\)";
		
		Pattern pat = Pattern.compile(regEx);  
		Matcher mat = pat.matcher(str);  
		
		if(mat.find())
			System.out.println(mat.group());
		else
			System.out.println("Not find");
	}

}
这个程序是在(222)-123这个字符串中查找匹配"(222)",如果存在会输出匹配的字符串,否则输出"Not find";
String regEx = "\\(222\\)";这段代码之所以使用两个反斜线符号“\\”,是因为在java中,与regex有关的包,并不都能理解和识别反斜线字符\,
 为避免这一点,即为了让反斜线字符\在模式对象中被完全地传递,应该用双反斜线字符”\\“。这里,如果要表示一个“字面上的(”圆符号,就要使用“\\”。大家也可以试试String regEx = "(222)"这个匹配模式,输出结果是“222”,就也是说这是圆符号不是作为一个字面上的字符,而是表示222作为一个整体来看待的意思。如果说要匹配“(222”,如果这时使用String regEx = "(222"是会报错的。必须使用String regEx = "\\(222)"。

同样的上面String regEx = "\\(222\\)";还可以表示为:
String regEx = "\\(2{3}\\)";
这里{3}表示重复符,表示{3}的前一个字符重复出现3次,则2{3}就表示"222"。有于我们匹配的是(整数),那么还可以使用下面的方式:
String regEx = "\\(\\d\\d\\d\\)";
这里"\d"表示从0-9其中一个数字
如果说要匹配"(222)-123"整个字符串,可以使用下面这个表达式:
String regEx = "\\(\\d{3}\\)+-+(\\d{3})";
这里和大家介绍一个“+”符号,这个符号表示连接的意思,就像String字符串中的“+”一样,连接两个字符串。其实上面的表达式等同于:
String regEx = "\\(\\d{3}\\)-(\\d{3})";

总结

(1)k{n},表示n个k
(2)\d,表示0-9中的一个数字
(3)\\(\\),表示圆括号“()”
(4)+,表示连接两个表达式








发布了66 篇原创文章 · 获赞 82 · 访问量 26万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章