(1)k{n},表示n个k" />
当前位置: 代码迷 >> 编程 >>
(1)k{n},表示n个k
  详细解决方案

(1)k{n},表示n个k

热度:9541   发布时间:2013-02-26 00:00:00.0
(1)Java正则表达式学习

前言


基本类

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


代码实例

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})";

总结

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








  相关解决方案