Java编程中通用的正则表达式(二)

正则表达式,又称正则式、规则表达式、正规表达式、正则模式或简称正则,是一种用来匹配字符串的工具。它是一种字符串模式的表示方法,可以用来检索、替换和验证文本。正则表达式是一个字符串,它描述了一些字符的组合,这些字符可以是字母、数字或者其他字符。在正则表达式中,我们可以使用特殊的语法和符号来表示某些字符或字符集合。正则表达式是一种强大且灵活的工具,可以在不同的编程语言和工具中使用,如Java、JavaScript、Python、Perl、PHP等。
1、匹配中文
在Java中,可以使用Unicode范围来匹配中文字符。其中,汉字的Unicode编码范围为:[\u4e00-\u9fa5]。
下面是一个例子,使用正则表达式判断一个字符串中是否包含中文字符:
String str = "Hello, 你好!";
String regex = "[\u4e00-\u9fa5]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {System.out.println("包含中文字符");
} else {System.out.println("不包含中文字符");
}
输出结果为:"包含中文字符"。
2、匹配身份证
以下是Java中使用正则表达式判断身份证号的代码:
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String idCard = "110101199003073197"; // 身份证号码String regex = "\\d{17}[\\d|x]|\\d{15}"; // 正则表达式if (Pattern.matches(regex, idCard)) {System.out.println("身份证号码格式正确");} else {System.out.println("身份证号码格式不正确");}}
}
这里使用了Java中的正则表达式类Pattern,使用matches方法判断字符串是否符合正则表达式。正则表达式\\d{17}[\\d|x]|\\d{15}表示身份证号码可以是18位(最后一位可能是数字或字母x)或者是15位。其中,\\d表示匹配数字,x表示字母x。
3、匹配IP地址
要判断一个字符串是否为IP地址,可以使用Java中的正则表达式。下面是一个示例代码:
public static boolean isIpAddress(String input) {String pattern = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";return input.matches(pattern);
}
这个方法接收一个字符串参数,并返回一个布尔值。如果参数字符串满足IPv4地址格式,返回true;否则返回false。
该正则表达式的含义是:以数字开头,由三个数字和一个点号组成的字符串重复四次。每个数字的范围为1到3位。点号需要转义。
例如,以下几个字符串都是合法的IPv4地址:
- 192.168.0.1
- 10.0.0.1
- 172.16.0.1
而以下字符串不是IPv4地址:
- 192.168.0.1000(其中1000超出了数字范围)
- 10.0.0.01(前导零无效)
请注意,此方法只能判断IP地址的格式是否正确,而不能验证IP地址是否真正存在或是否可达。
4、屏蔽敏感词汇
可以使用 Java 的正则表达式(Regular Expression)来过滤和替换文本中的特定字符或字符串。下面是一个示例代码,用于屏蔽敏感词汇:
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexFilter {public static void main(String[] args) {String text = "你是一只小小鸟,飞呀飞不高,就算风雨无阻也要努力飞,因为你是小小鸟。";String[] sensitiveWords = {"小小鸟", "飞呀飞不高", "努力飞"};String patternString = String.join("|", sensitiveWords); // 构造正则表达式Pattern pattern = Pattern.compile(patternString); // 编译正则表达式Matcher matcher = pattern.matcher(text); // 匹配文本StringBuffer result = new StringBuffer(); // 用于存储过滤后的文本while (matcher.find()) {// 将匹配到的敏感词汇用"*"替换matcher.appendReplacement(result, "*".repeat(matcher.group().length()));}matcher.appendTail(result); // 将剩余文本添加到结果中System.out.println(result); // 输出结果(敏感词汇被屏蔽)}
}
在上面的代码中,可以通过修改 text 变量中的文本和 sensitiveWords 数组中的敏感词汇来测试不同的情况。另外,也可以调整正则表达式的构造方式和替换方式来实现更复杂的过滤和替换规则。
5、判断格式化时间
在 Java 中,可以使用正则表达式来判断格式化时间是否符合指定的格式。下面是一个例子:
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
String time = "2021-03-23 12:30:00";
if (time.matches(regex)) {System.out.println("时间格式正确");
} else {System.out.println("时间格式不正确");
}
上面的代码中,正则表达式 \\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} 表示匹配以四位数字开头,后面跟着 -,两位数字,再后面跟着 -,两位数字,再后面跟着空格,两位数字,再后面跟着 :,两位数字,再后面跟着 :,两位数字的字符串。如果时间字符串符合这个格式,就会输出 时间格式正确,否则输出 时间格式不正确。
相关文章:
Java编程中通用的正则表达式(二)
正则表达式,又称正则式、规则表达式、正规表达式、正则模式或简称正则,是一种用来匹配字符串的工具。它是一种字符串模式的表示方法,可以用来检索、替换和验证文本。正则表达式是一个字符串,它描述了一些字符的组合,这…...
[GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练
前言 OpenAI的创始人之一,大神Andrej Karpthy刚在微软Build 2023开发者大会上做了专题演讲:State of GPT(GPT的现状)。 他详细介绍了如何从GPT基础模型一直训练出ChatGPT这样的助手模型(assistant model)。作者不曾在其他公开视频里看过类似的内容,这或许是OpenAI官方…...
接口测试-Jmeter使用
一、线程组 1.1 作用 线程组就是控制Jmeter用于执行测试的一组用户 1.2 位置 右键点击‘测试计划’-->添加-->线程(用户)-->线程组 1.3 特点 模拟多人操作线程组可以添加多个,多个线程组可以并行或者串行取样器(请求)和逻辑控制器必须依赖线程组才能…...
十大排序(含java代码)
一、冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调,比较是相邻的两个元素比较,交换也发生在这两个元素之间。(类似于气泡上浮过程) 动图演示 代码实现 int a[]{2,5,3,7,4,8};for (int i 0; i < a.length; i) {f…...
js基础:简介、变量与数据类型、流程循环控制语句、数组及其api
JS基础:简介、变量与数据类型、流程循环控制语句、数组及其api 一、简介 1、js概述 tip:JavaScript是什么? 有什么作用? JavaScript(简称JS)是一种轻量级的、解释性的编程语言,主要用于在网页…...
kubeadm搭建单master多node的k8s集群--小白文,图文教程
参考文献 K8S基础知识与集群搭建 kubeadm搭建单master多node的k8s集群—主要参考这个博客,但是有坑,故贴出我自己的过程,坑会少很多 注意: 集群配置是:一台master:zabbixagent-k8smaster,两台…...
CSS层叠样式表一
1,CSS简介 1.1 CSS-网页的美容师 CSS的主要使用场景就是美化网页,布局页面的 CSS也是一种标记语言 CSS主要用于设置HTML页面中的文本内容(字体,大小,对齐方式等)、图片的外形(宽高、边框样式…...
【等保】安徽省等保测评机构名单看这里!
随着互联网技术的飞速发展,网络安全已成为国家安全、社会稳定的重要保障,因此我们严格贯彻落实等保政策。等保测评机构在等保制度执行过程中发挥着重要的作用。现在我们就来看看安徽省等保测评机构有哪些? 【等保】安徽省等保测评机构名单看…...
学习IO的第八天
作业:使用信号灯循环输出ABC sem.c #include <head.h>union semun {int val; /* Value for SETVAL */struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */unsigned short *array; /* Array for GETALL, SETALL */struct seminf…...
【clickhouse】ck远程访问另一个ck
代码实现 CREATE TABLE tmp.tbsas remote( host, database_name, table_name, user, password );就相当于从ck1直接请求ck2 参考文档 https://github.com/ClickHouse/ClickHouse/issues/15295 https://clickhouse.com/docs/zh/sql-reference/table-functions/remote...
Django的logging-日志模块的简单使用方法
扩展阅读: Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解 现在有下面的Python代码: # -*- coding: utf-8 -*-def log_out_test(content_out):print(content_out)content1 "i love you01" log_out_test(content1)现…...
argparse --- 命令行选项、参数和子命令解析器
3.2 新版功能. 源代码: Lib/argparse.py 教程 此页面包含该 API 的参考信息。有关 Python 命令行解析更细致的介绍,请参阅 argparse 教程。 argparse 模块可以让人轻松编写用户友好的命令行接口。 程序定义它需要哪些参数,argparse 将会知…...
洛谷 P8802 [蓝桥杯 2022 国 B] 出差
文章目录 [蓝桥杯 2022 国 B] 出差题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE [蓝桥杯 2022 国 B] 出差 题目链接 https://www.luogu.com.cn/problem/P8802 题目描述 A \mathrm{A} A 国有 N N N 个城市,编号为 1 … N …...
fastadmin配置教程
第一. 打开小皮,创建一个网站 第二. 打开fastadmin官网,下载压缩包 下载好后是这个样子 打开网站的根目录,将这个压缩包压缩到你网站的根目录里 第三,小皮里面创建一个数据库 第四,然后打开网站,输入创…...
golang游戏服务器 - tgf系列课程01
TGF框架的特点和功能 课程介绍了TGF框架的特点和功能在第一节课程中我们并不会介绍框架的使用。我们希望在这节课程中,能让你了解到tgf是一个什么样的框架 概要 本节课程介绍了TGF框架的特点和功能。TGF是一个开箱即用的服务器框架, 适合中小型团队和独立开发者进行游戏开发。…...
react dom的diff理解及性能优化
diff的三大过程 当某个值变化时,他从根组件寻找 (key,state,props,context) 当父组件稳定时,react会跳过子组件的props的对比 只有当当前组件值改变时,从他开始,所有的子孙节点都会对比props props是全等比较,所以&am…...
【acwing】92. 递归实现指数型枚举
穿越隧道 递归枚举、位运算 方法① 从1到n,顺序访问每位数,是否选择,每位数有两种状态,选1或不选0. AC代码如下: #include <iostream> using namespace std;const int N 100; // bool st[N]; int n;void dfs(in…...
【面试】Java最新面试题资深开发-分布式系统中的CAP理论
问题六:分布式系统中的CAP理论 分布式系统的设计涉及到CAP理论,即一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)。请解释一下CAP理论是什么&#x…...
Windows下使用CMD修改本地IP
在网络适配器界面查看当前网线连接的哪个网口,我当前连的是 以太网 这个名字的: 在windows下使用管理员权限打开CMD命令工具,输入如下命令(如我想本地ip改成192.168.2.4): netsh interface ip set address "以太网" st…...
20231211-DISM++安装win10-22h2-oct
20231211-DISM安装win10-22h2-oct 一、软件环境 zh-cn_windows_10_consumer_editions_version_22h2_updated_oct_2023_x64_dvd_eb811ccc.isowepe x64 v2.3标签:win10 22h2 wepe dism分栏:WINDOWS 二、硬件环境 8G或以上的有PE功能的启动U盘一个台式机…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
