本来代码实践来源于自己,参考页面是:http://blog.csdn.net/allwefantasy/article/details/3136570
需要的包、类:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
以下列举了常见的regex的用法及用处,都非常有用!
- public class RegexTest {
- public static void main(String[] args) {
- Pattern pattern = Pattern.compile("(\\d{3})(\\d{1})"); //一旦编译,任何地方皆可使用
- Matcher matcher = pattern.matcher("111222");
- while (matcher.find()) {
- //若group参数为空,则返回整个匹配串,
- // 否则,从1开始,按括号位置从左到右,作为参数,取出相应括号的内容
- System.out.println(matcher.group(2));
- }
- System.out.println("-------------------------");
- //字符串是否满足表达式
- System.out.println(Pattern.compile("\\d(.|\n)*").matcher("2\n").matches());
- System.out.println("-------------------------");
- String input ="This!!unusual use!!of exclamation!!points";
- System.out.println(Arrays.asList(
- Pattern.compile("!!").split(input)));
- //其实这样做是麻烦的,直接使用 "我是一个测试的字符串".split("!!")就能得到结果
- System.out.println("-------------------------");
- Matcher m2 = Pattern.compile("[frb][aiu][gx]")
- .matcher("fix the rug with bags");
- while (m2.find())
- System.out.println(m2.group());
- m2.reset("fix the rig with rags"); //重置匹配字符串
- while (m2.find())
- System.out.println(m2.group());
- System.out.println("m2-------------------------");
- }
- /**
* 替换字符串中的一些有固定规律的字符串,并根据其内容重新组合字符串
* 如:
* "one cat two cat12 in the yard";
* 换成:
* one cbt two cbt22 in the yard
* @param charSeq
* @return
*/- public static StringBuffer changeReplaceString(String charSeq) {
// String charSeq = "one cat two cat12 in the yard";
Pattern p = Pattern.compile("cat\\d*");
Matcher m = p.matcher(charSeq);
StringBuffer sb = new StringBuffer();
//字符串的替换
while (m.find()) {
//获取匹配到的字符串
String myFind = m.group();
/* 将字符串进行一定的替换,我们为什么没有使用
m.replaceAll("dog") 呢?
因为它不能把获取到的字符串进行一个有规则的2次替换
比如我想把 cat12,换成cat22,而cat保持不变
由于java对拉姆达和闭包函数支持性的问题,想做到这一点,会有很多代码生成*/
m.appendReplacement(sb, myFind.replace("a", "b").replace("1", "2"));
}
m.appendTail(sb);
System.out.println(sb.toString());
// 结果: one cbt two cbt22 in the yard
return sb;- }
/**
* 正则表达式快速替换
*/
public static void quickReplace() {
String str = "正则表达式 Hello World,正则表达式 Hello World";
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher(str);
//替换第一个符合正则的数据
System.out.println(matcher.replaceAll("Java"));
System.out.println(matcher.replaceFirst("Java"));
System.out.println("--------");
//replaceAll的第一个参数可以传正则表达式,其实下面的代码更简便
System.out.println(str.replaceAll("正则表达式","Java"));
System.out.println(str.replaceFirst("正则表达式","Java"));
}
- }