Java 正则表达式

使用字符串中 replaceAll 方法

语法:

"字符串".replaceAll("正则表达式", "替换的内容");
public class Test
{
  public static void main(String[] args) {
    String str = "ad#12_qq#34#ABCDEF#5${server}, 我是中国666";
		String target = "-pangugle-";

		System.out.println("原字符串 : " + str);
		System.out.println("替换字符串 : " + target);
		System.out.println("================我是分割线==================");
		// 注意+表示匹配至少1次, * 表示匹配0次或多次, ? 表示匹配0次或1次

		System.out.println("匹配单字符 =====> " + str.replaceAll("a", target));
		System.out.println("匹配多字符 =====> " + str.replaceAll("\\$\\{server\\}", target));
		System.out.println("匹配数字 =====> " + str.replaceAll("[0-9]+", target));
		System.out.println("匹配小写英文字母 =====> " + str.replaceAll("[a-z]+", target));
		System.out.println("匹配大写英文字母 =====> " + str.replaceAll("[A-Z]+", target));
		System.out.println("匹配大小写英文字母 =====> " + str.replaceAll("[a-zA-Z]+", target));
		System.out.println("匹配仅中文 =====> " + str.replaceAll("[\\u4e00-\\u9fa5]+", target));
		System.out.println("匹配字母、数字、下划线 =====> " + str.replaceAll("\\w+", target));
  }
}

运行结果为

原字符串 : ad#12_qq#34#ABCDEF#5${server}, 我是中国666
替换字符串 : -pangugle-
================我是分割线==================
匹配单字符 =====> -pangugle-d#12_qq#34#ABCDEF#5${server}, 我是中国666
匹配多字符 =====> ad#12_qq#34#ABCDEF#5-pangugle-, 我是中国666
匹配数字 =====> ad#-pangugle-_qq#-pangugle-#ABCDEF#-pangugle-${server}, 我是中国-pangugle-
匹配小写英文字母 =====> -pangugle-#12_-pangugle-#34#ABCDEF#5${-pangugle-}, 我是中国666
匹配大写英文字母 =====> ad#12_qq#34#-pangugle-#5${server}, 我是中国666
匹配大小写英文字母 =====> -pangugle-#12_-pangugle-#34#-pangugle-#5${-pangugle-}, 我是中国666
匹配仅中文 =====> ad#12_qq#34#ABCDEF#5${server}, -pangugle-666
匹配字母、数字、下划线 =====> -pangugle-#-pangugle-#-pangugle-#-pangugle-#-pangugle-${-pangugle-}, 我是中国-pangugle-

使用 Pattern 与 Matcher 进行正则匹配

判断是否有特殊字符串

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test
{
  public static void main(String[] args) {
    String str = "My name is pangugle !";
    System.out.println("匹配字符串是否包含有pangugle =====> " + Pattern.matches(".*pangugle.*", str));
  }
}

运行结果为:

匹配字符串是否包含有pangugle =====> true

正则提取相关内容

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test
{
  public static void main(String[] args) {
      String str = "I am pangugle, 333, AAA, 666, abcd";
      String regex = ".*? (\\d+).*?";

      Pattern p = Pattern.compile(regex);

      Matcher m = p.matcher(str);
      while(m.find())
      {
      	System.out.println(m.group(0));
      	System.out.println(m.group(1));
      }
  }
}

运算结果为

I am pangugle, 333
333
, AAA, 666
666

注意: group(0) 表示从上一次匹配到的末尾 到 这次匹配到的字符前

更多正则表达式教程