Java的正则表达式是如此的强大,能够帮我们做很多东西,而这如果放到c或者c++中则会花去很多时间。Java的Regex包下的Pattern 和 Matcher两个类,如果仔细阅读帮助文档的话,很容易就能掌握其中的内容。
一个Matcher实例是被用来对目标字符串进行基于既有模式(也就是一个给定的Pattern所编译的正则表达式)进行匹配查找的,所有往Matcher的输入都是通过CharSequence接口提供的,这样做的目的在于可以支持对从多元化的数据源所提供的数据进行匹配工作。
方法就不一一叙述,将其中比较重要,且易混淆的方法对比如下:
Matcher中的matches()/lookingAt ()/find()方法:
一个Matcher对象是由一个Pattern对象调用其matcher()方法而生成的,一旦该Matcher对象生成,它就可以进行三种不同的匹配查找操作:
1.matches()方法尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。
2.lookingAt ()方法将检测目标字符串是否以匹配的子串起始。
3.find()方法尝试在目标字符串里查找下一个匹配子串。
Matcher中的replaceAll ()/appendReplacement()/appendTail()方法:
Matcher类同时提供了四个将匹配子串替换成指定字符串的方法:
1.replaceAll()
2.replaceFirst()
3.appendReplacement()
4.appendTail()
replaceAll()与replaceFirst()的用法都比较简单,请看上面方法的解释。
appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里,而appendTail(StringBuffer sb) 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。
举例如下:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("dog cat cat dog dog dog dog cat");
StringBuffer sb = new StringBuffer();
while(m.find()) {
m.appendReplacement(sb, m.group());
}
m.appendTail(sb);
System.out.println(sb);
下面罗列出常见的正则表达式:
1. 浮点数 [-\\+]?\\d+(\\.\\d*)?
2. 邮件地址 ^[a-zA-Z][\\w\\.\\-_]*@(\\w+\\.)+[a-zA-Z]{2,3}$
以字母开头
邮件中除了数字和字母外,只可以有.-_字符
3. 整数 [-\\+]?[1-9]\\d*
一个Matcher实例是被用来对目标字符串进行基于既有模式(也就是一个给定的Pattern所编译的正则表达式)进行匹配查找的,所有往Matcher的输入都是通过CharSequence接口提供的,这样做的目的在于可以支持对从多元化的数据源所提供的数据进行匹配工作。
方法就不一一叙述,将其中比较重要,且易混淆的方法对比如下:
Matcher中的matches()/lookingAt ()/find()方法:
一个Matcher对象是由一个Pattern对象调用其matcher()方法而生成的,一旦该Matcher对象生成,它就可以进行三种不同的匹配查找操作:
1.matches()方法尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。
2.lookingAt ()方法将检测目标字符串是否以匹配的子串起始。
3.find()方法尝试在目标字符串里查找下一个匹配子串。
Matcher中的replaceAll ()/appendReplacement()/appendTail()方法:
Matcher类同时提供了四个将匹配子串替换成指定字符串的方法:
1.replaceAll()
2.replaceFirst()
3.appendReplacement()
4.appendTail()
replaceAll()与replaceFirst()的用法都比较简单,请看上面方法的解释。
appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里,而appendTail(StringBuffer sb) 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。
举例如下:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("dog cat cat dog dog dog dog cat");
StringBuffer sb = new StringBuffer();
while(m.find()) {
m.appendReplacement(sb, m.group());
}
m.appendTail(sb);
System.out.println(sb);
下面罗列出常见的正则表达式:
1. 浮点数 [-\\+]?\\d+(\\.\\d*)?
2. 邮件地址 ^[a-zA-Z][\\w\\.\\-_]*@(\\w+\\.)+[a-zA-Z]{2,3}$
以字母开头
邮件中除了数字和字母外,只可以有.-_字符
3. 整数 [-\\+]?[1-9]\\d*