今天我们来聊聊正则表达式和模式匹配问题,这个知识点正是我们平常做项目常用的知识点,希望小伙伴们一定要熟练掌握。
正则表达式(Regular Expression)本身也是一个字符串,是由普通字 符及元字符组成的模式字符串,它用来定义别的字符串的组成规则。
• String类中的boolean matches(String regex)方法可用来判断当前字符 串是否和参数regex指定的正则表达式匹配。
1、正则表达式规则
• 元字符: (1) .匹配任意单个字符 【示例】 验证用户名是否是’b’开头, ’e’结尾,长度为4的字符串。 (2) []用来给出取值集合,匹配其中某一个字符 【示例】te[sx]t (3) 在[]中使用-表示范围,如 [0-9] [A-Za-z0-9]等 【示例】s[6-9] s[a-g] (4) ()用来界定子表达式,匹配其中的有序序列 (5) 元字符|表示或的关系 【示例】b(lue|lack|rown) (6) 元字符{n}表示前面的元素的重复n次;{2,5}表示前面的元素重复2到5次; {3,}表示至少重复3次。 【示例】 .{1,}(lue|lack|rown) (7) 对于重复次数的限制,还可使用下列特殊元字符: * 表示前面的元素重复0次或多次 ? 表示前面的元素重复0次或1次 + 表示前面的元素重复1次或多次 (8) 转义字符* 【示例】 .\.(com|cn|org) (9)元字符^和$
^代表字符串开始,表示字符串结束
\d \D \w \W \s \S等简洁符号

2、正则表达式的使用之处

import javax.swing.JOptionPane;
public class TestZhengZe {
public static void main(String[] args) {
view();
}
private static void view() {
while (true) {
String s = "请输入您要匹配的Ip地址";
String input = JOptionPane.showInputDialog(s);
String info = "";
// 过滤非法输入
if (input == null || input.equals("")) {
JOptionPane.showMessageDialog(null, "您输入的IP地址为空,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
continue;
}
if (input.matches("127.0.0.1")) {
info = "您输入的Ip地址为主机地址!";
}else if (input.matches("(12[0-7]|1[0-1]\\d|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
info = "您输入的Ip地址为A类地址!";
} else if (input.matches("(12[8-9]|1[3-8]\\d|19[0,1]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
info = "您输入的Ip地址为B类地址!";
} else if (input.matches("(19[2-9]|2[0-1]\\d|22[0-3]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
info = "您输入的Ip地址为C类地址!";
} else if (input.matches("(22[4-9]|23[0-9]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
info = "您输入的Ip地址为D类地址!";
} else if (input.matches("(24[0-9]|25[0-5]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
info = "您输入的Ip地址为E类地址!";
}else {
JOptionPane.showMessageDialog(null, "请正确输入IP地址格式代号!", "错误", JOptionPane.ERROR_MESSAGE);
break;
}
JOptionPane.showMessageDialog(null,info);
}
}
}
结果展示


3、模式匹配




4、模式匹配寻找子串
示例代码:

5、格式化输出




示例代码:
String l = String.format("%.2f",(Math.PI*2*r));
自己写算法实现格式化四舍五入并保留两位小数:
package com.yueqian.mySwing;
import java.text.DecimalFormat;
public class GeShiHua {
public static double format(double num) {
num = (int)(num * 100+0.5)/100.0;
return num;
}
public static void main(String[] args) {
double d1 = 23.4345;
double d2 = 23.4354;
System.out.println(format(d1));
System.out.println(format(d2));
}
}
6、String常用方法


7、StringBuffer常用方法


好了,今天的内容就分享这么多了。期待明天的精彩展现吧!