使用正则表达式操作字符串
public class RegexExpress
{
public static boolean find(String str, String regex)
{
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
boolean b = matcher.find();
System.out.println(str + " 匹配正则表达式" + regex + " " + b);
return b;
}
public static void testFind()
{
// ^ 匹配字符串的开头 $匹配字符串结尾
RegexExpress.find("abcdef", "^abc");// 以abc开头的 能匹配到
RegexExpress.find("Aabcdef", "^abc");// 不能匹配到
RegexExpress.find("Aabcdef", "def$");// 以def结尾的 能匹配到
RegexExpress.find("Aabcdef", "^def$");// 精确匹配def 不能匹配到
RegexExpress.find("def", "^def$");// 能匹配到
// *匹配0个或者多个前面的字符
RegexExpress.find("a", "ab*");
RegexExpress.find("ab", "ab*");
RegexExpress.find("acbbb", "ab*");
// +符号匹配至少一个前面的字符
RegexExpress.find("a", "ab+");
RegexExpress.find("ab", "ab+");
RegexExpress.find("abbb", "ab+");
// ?符号匹配0个或1个前面的字符
RegexExpress.find("a", "ab?c?");
RegexExpress.find("ab", "ab?c?");
RegexExpress.find("abc", "ab?c?");
RegexExpress.find("abbcb", "ab?c?");
// .符号能匹配除换行符以外的所有字符
RegexExpress.find("a", ".");
// X|Y 匹配X或者Y
RegexExpress.find("x", "x|y");
RegexExpress.find("y", "x|y");
RegexExpress.find("abc", "abc|xyz");
RegexExpress.find("xyz", "abc|xyz");
RegexExpress.find("abc", "ab(c|x)yz");
RegexExpress.find("abcyz", "ab(c|x)yz");
// {n}恰好匹配n次前面的字符
RegexExpress.find("a", "a{3}");
RegexExpress.find("aaa", "a{3}");
// {n,}至少匹配n次前面的字符
RegexExpress.find("a", "a{3,}");
RegexExpress.find("aaa", "a{3,}");
RegexExpress.find("aaaaaa", "a{3,}");
// {n,m}至少匹配n次至多匹配m次前面的字符
RegexExpress.find("a", "a{3,4}");
RegexExpress.find("aaa", "a{3,4}");
RegexExpress.find("aaaaaa", "a{3,4}");
// [xyz]表示一个字符集匹配括号中的字符之一
RegexExpress.find("a", "[abc]");
RegexExpress.find("b", "[abc]");
RegexExpress.find("c", "[abc]");
// ^[]表示否定一个字符集 即匹配不在括号内的字符
RegexExpress.find("a", "[^abc]");
RegexExpress.find("x", "[^abc]");
RegexExpress.find("8", "[^abc]");
// [a-z]匹配a到z任意一个小写字母
RegexExpress.find("a", "[a-z]");
RegexExpress.find("$", "[a-z]");
RegexExpress.find("8", "[a-z]");
// [a-z-[bc]] 表示匹配a到z除了bc的所有字符
RegexExpress.find("a", "[a-z-[bcd]]");
RegexExpress.find("f", "[a-z-[c-z]]");
// \n换行符 \f换页符 \t制表符
RegexExpress.find("\n", "\n");
RegexExpress.find("\f", "\f");
RegexExpress.find("\t", "\t");
}
// 精确匹配字符串和正则表达式 就是看字符串的每个字符都是否满足正则表达式
private static boolean match(String str, String regex)
{
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
boolean b = matcher.matches();
System.out.println(str + "精确匹配正则表达式" + regex + " " + b);
return b;
}
public static void testMatch()
{
RegexExpress.match("Aabcdfsad", "^abc");
RegexExpress.match("abcdfac", "^abc");
RegexExpress.match("abc", "^abc");
RegexExpress.match("abcdef", "def$");
RegexExpress.match("def", "def$");
}
private static String replace(String str, String regex, String newStr)
{
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
String b = m.replaceAll(newStr);
System.out.println(str + "被" + regex + "替换成" + b);
return b;
}
public static void testReplace()
{
RegexExpress.replace("a b c", " {2,}", " ");
}
public static void main(String[] args)
{
RegexExpress.testFind();
RegexExpress.testMatch();
RegexExpress.testReplace();
}
}