正则表达式经典实例

2024-09-02 15:08

本文主要是介绍正则表达式经典实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

正则表达式经典实例

 

 

正则表达式的常用操作:
  * 1:匹配:
  *     使用的是String类中的boolean matches(String regex)方法
  * 2:切割:
  *     使用的是String类中的String[] split(String regex)
  * 3:替换:
  *      String replaceAll(String regex,String replacement)
  * 4:获取:
  *     从一个字符串得到所有符合某个正则规则的内容
  *     Pattern
  *     Matcher

 

第一题

匹配电话号码

public static void piPei()
{
String tel = "13534781023";
String regex = "1[34578]\\d{9}";
boolean b = tel.matches(regex);
System.out.println(b);
}

 

第二题

已知字符串:zhanngsan***lisi&&&&&wangwu######zhaoliugwwwwwwwzhouqi,把之中的人名获取出来。

public static void qieGe()
{
String str = "zhanngsan***lisi&&&&&wangwu######zhaoliugwwwwwwwzhouqi";
//重复字母中的第一位是任意字符,第二位跟第一位一样,然后可以有多个
String regex = "(.)\\1+";
String[] arr = str.split(regex);
for(String ss:arr)
{
System.out.println(ss);
}
}


 

第三题

已知字符串:zhangsan***lisi&&&&&wangwu######liunengwwwwwwwxieyingwu,去除重复字母

已知字符串:woeiuoie3457948herehk09856909457809sdfhsdkjfh5987689762344,去除8位以上的数字

已知字符串:18620982678,把手机号码中间4位用*代替

public static void tiHuan()
{
//去除重复字母
String str1 = "zhangsan***lisi&&&&&wangwu######liunengwwwwwwwxieyingwu";
str1 = str1.replaceAll("(.)\\1+","$1");//$1 表示取正则表达式中第一组的值
System.out.println(str1);
//去除8位以上的数字
String str2 = "woeiuoie3457948herehk09856909457809sdfhsdkjfh5987689762344";
str2 = str2.replaceAll("\\d{8,}", "****");
System.out.println(str2);
//把手机号码中间4位用*代替
String str3 = "18620982678";
str3 = str3.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");		
System.out.println(str3);
}

输出结果是:
zhangsan*lisi&wangwu#liunengwxieyingwu
woeiuoie3457948herehk****sdfhsdkjfh****
186****2678

 

第四题

已知字符串:I like you very much.获取4个字母组成的单词

public static void huoQu()
{
String str = "I like you very much.";
String regex = "[a-z]{4}";
//把字符串形式的正则表达式编译成Patter类型的对象
//Pattern类型的对象不具备获取的功能
Pattern pattern = Pattern.compile(regex);
//Matcher对象的作用是:从str中获取符合pattern规则的内容
Matcher m = pattern.matcher(str);
//使用Matcher对象获取
while(m.find())
{
System.out.println(m.group());
}	
}


 

第五题

已知字符串:我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程,要求,转成:我要学编程

public static void main(String[] args) {
String str = "我我..我我..我.我要...要要...要要...要学学....学学学...编编...编编..编程...程程...程程..程.程";
//先去除.
str = str.replaceAll("\\.+", "");
System.out.println(str);
//在去除重复汉字
str = str.replaceAll("(.)\\1+","$1");
System.out.println(str);
}

第六题

对ip地址按照数值顺序排序。
           192.168.1.2  10.10.10.10  4.4.4.4 127.0.0.1

public static void main(String[] args) {
String str = "192.168.1.200  10.10.10.10  4.4.4.4 127.0.0.1";
//每个值前边儿补2位0
str = str.replaceAll("(\\d{1,3})", "00$1");
System.out.println(str);
//每个值保留3位
str = str.replaceAll("0*(\\d{3})","$1");
System.out.println(str);
//按照空格切割出每个IP地址
String[] arr = str.split(" +");
Arrays.sort(arr);
for(String ss:arr)
{
System.out.println(ss.replaceAll("0*(\\d{1,3})", "$1"));
}
}


 

第七题

对邮件地址进行匹配

public static void main(String[] args) {
String email = "lisi_001@sina.com.cn";
//String regex = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,2}";
String regex = "\\w+@\\w+(\\.\\w+)+";
System.out.println(email.matches(regex));
}


第八题

网页爬虫,获取网页上的邮箱

//从网络上的网页获取邮箱
public static void getEmail() throws IOException
{
String path = "http://localhost:8080/myweb/mail.html";
URL url = new URL(path);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();//读取服务器端返回的mail.html文件的数据
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String regex = "\\w+@\\w+(\\.\\w+)+";
Pattern p = Pattern.compile(regex);
String line = null;
while((line = br.readLine())!=null)
{
//使用Matcher对象从读取的一行中获取符合邮箱规则的内容
Matcher m = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
}


 

 

 

 

这篇关于正则表达式经典实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130296

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java实例化对象的​7种方式详解

《Java实例化对象的​7种方式详解》在Java中,实例化对象的方式有多种,具体取决于场景需求和设计模式,本文整理了7种常用的方法,文中的示例代码讲解详细,有需要的可以了解下... 目录1. ​new 关键字(直接构造)​2. ​反射(Reflection)​​3. ​克隆(Clone)​​4. ​反序列化

正则表达式r前缀使用指南及如何避免常见错误

《正则表达式r前缀使用指南及如何避免常见错误》正则表达式是处理字符串的强大工具,但它常常伴随着转义字符的复杂性,本文将简洁地讲解r的作用、基本原理,以及如何在实际代码中避免常见错误,感兴趣的朋友一... 目录1. 字符串的双重翻译困境2. 为什么需要 r?3. 常见错误和正确用法4. Unicode 转换的

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3