正则表达式
[*]正则表达式是 用某种模式去匹配字符串的一个公式
[*]正则表达式用于 处置处罚字符串和文本
Java中的正则表达式
[*]在Java正则表达式中,必要 使用双斜杠 \表示转义符
[*]在Java正则表达式中, 默认区分大小写
[*]在Java正则表达式中,默认是贪婪匹配(最大匹配),会匹配最多的
非贪婪匹配:在限定符后面加上?号
正则表达式 - API
[*]Pattern类
matches( ):整体匹配。判断整个字符串是否满意格式,返回true或false
[*]Matcher
[*]PatternSyntaxException
正则表达式 - 语法
https://img2024.cnblogs.com/blog/2464263/202409/2464263-20240911234903926-1890368828.png
转义符
[*]使用正则表达式匹配特殊的字符时,必要使用转义字符
[*]在Java的正则表达式中,使用使用双斜杠 \代表转义字符
预定义字符
https://img2024.cnblogs.com/blog/2464263/202409/2464263-20240911235015592-257648940.png
边界定位符
https://img2024.cnblogs.com/blog/2464263/202409/2464263-20240911235242816-991082426.png
限定符
https://img2024.cnblogs.com/blog/2464263/202409/2464263-20240911233905372-639215996.png
修饰符
用来修改表达式的搜索结果. 这些标记可以任意的组合使用, 它也是整个正则表达式的一部分
[*]i:忽略大小写
[*]g:全局搜索
[*]m:多行
分组-捕获-反向引用
[*]捕获
https://img2024.cnblogs.com/blog/2464263/202409/2464263-20240911235315782-204931760.png
[*]非捕获
https://img2024.cnblogs.com/blog/2464263/202409/2464263-20240911235348525-1665300722.png
String类的四个正则表达式方法
[*]切割
String[ ] split(String regex):根据给定正则表达式的匹配拆分此字符串。
String[ ] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
[*]替换
String replaceAll(String regex, String replacement): 使 用 给 定 的replacement 替换此字符串全部匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement): 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
// 目标:将JDK1.3和JDK1.4替换为JAVA
String content = "技术的产JDK1.3生以及为JDK1.4对网络编程哈哈随便";
content=content.****replaceAll("JDK1\\.", "JAVA");
System.out.println(content);
[*]匹配正则表达式
boolean matches(String regex):字符串是否匹配给定的正则表达式
应用实例
必须全部是汉字
public static void main(String[] args) {
String content = "哈哈";
String regStr = "^[\u0391-\uffe5]+$";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
if(matcher.find()){
System.out.println("满足格式:"+matcher.group(0));
}else{
System.out.println("格式错误!");
}
}URL地址验证
public static void main(String[] args) {
String content = "https://www.bilibili.com/video/BV1Eq4y1E79W/?p=17&spm_id_from=pageDriver&vd_source=861db91ebfeac0ca1eb519f4fe726bbc";
content = "www.baidu.com";
String regStr = "^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+{2,6}\\/?";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
if(matcher.find()){
System.out.println("满足格式:"+matcher.group(0));
}else{
System.out.println("格式错误!");
}
}结巴字符串 去重
String content = "我....我要....学学学学....编程java!";
//先去掉 ....
String regStr = "\\.{4}";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
content=matcher.replaceAll("");
System.out.println(content);
regStr="(.)\\1+"; //分组 反向引用
//pattern = Pattern.compile(regStr);
//matcher = pattern.matcher(content);
//content=matcher.replaceAll("$1"); //外部反向引用
//正则表达式调用链
content=Pattern.compile(regStr).matcher(content).replaceAll("$1");
System.out.println(content);// 我要学编程java!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]