前言
这一章节,我想列举一些平时看到的比较有意思的可以使用正则表达式的案例。还是比较有趣,特此记录。
案例
简化结巴话
说话结巴的人,会将一个字说多次,但是其意思就只有一次,这里模拟简化结巴话,如下。
原话:今天…的…的…的太阳真…真是太大…大…大了!
目标:今天的太阳真是太大了!
String s ="今天...的...的..的太阳真..真是太大...大..大了!";
// 去掉.字符
String newStr = s.replaceAll("\\.+", "");
System.out.println(newStr);
// 去除重复字符
String regEx = "(.)\\1+";// 此处好像不能加定位符^ $,加了反而不起作用
// 方式一
String str1 = Pattern.compile(regEx).matcher(newStr).replaceAll("$1");
System.out.println(str1);
// 方式二
String str2 = newStr.replaceAll(regEx, "$1");
System.out.println(str2);
多条件分割字符串
分割字符串还是比较常见的功能,但一般都是通过固定字符,比如:- . 等字符。Java字符串提供正则表达式分割,以前没怎么使用,此处记录一下。将字符串按照 # 和 - 和 . 和 数字进行分割。数字个数不确定。
String s = "哦.你.好我的#老朋友123好久没-有见到你了";
String[] arr = s.split("#|-|\\.|\\d+");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
判断是否为整数或小数
要求验证是否为整数或小数,提示:这个题要考虑整数和负数
比如:123 -345 67.89 -9.8 0.1等
String s = "-25.9";
if(s.matches("^[-]?([1-9]\\d*|0)(\\.\\d)?$")){
System.out.println("匹配成功");
}else{
System.out.println("匹配失败");
}