java 正则表达式详细讲解和全面案例,和根据正则筛选需要内容「建议收藏」

java 正则表达式详细讲解和全面案例,和根据正则筛选需要内容「建议收藏」java 正则表达式详细讲解和全面案例,和根据正则筛选需要内容

大家好,又见面了,我是你们的朋友全栈君。

public boolean cc(String aString,String parm){
Pattern p=Pattern.compile(aString);
java.util.regex.Matcher matcher=p.matcher(parm);
return matcher.matches();
}
@Test
public void regx(){
System.out.println("匹配确定的字符串"+cc("a03t", "a03t"));//true
System.out.println("匹配确定的字符串"+cc("a03t", "a03"));//false
// ^:匹配输入字符串开始的位置  $:匹配输入字符串结尾的位置
System.out.println("匹配单个字母"+cc("^[a-z]$", "a"));//true
//*:零次或多次匹配前面的字符或子表达式
System.out.println("匹配多个字母"+cc("^[a-z]*$", "abc"));//true
System.out.println("匹配多个字符"+cc("zo*", "z"));//true
//+:一次或多次匹配前面的字符或子表达式
System.out.println("匹配多个字母"+cc("^[a-z]+$","abc"));//true
System.out.println("匹配多个字符"+cc("zo+", "z"));//false
//?:零次或一次匹配前面的字符或子表达式
System.out.println("匹配26个小写字母中的一个"+cc("^[a-z]?$",""));//true
System.out.println("匹配26个小写字母中的一个"+cc("^[a-z]?$","a"));//true
System.out.println("匹配26个小写字母中的一个"+cc("^[a-z]?$","aa"));//true
System.out.println("匹配26个小写字母中的一个"+cc("^[a-z]?$","ab"));//false
//{n}: 是非负整数。正好匹配 n 次
System.out.println("匹配n次"+cc("^[a-z]{3}$", "bbr"));//true
System.out.println("匹配n次"+cc("^[a-z]{3}$", "aaa"));//true
//{n,}:是非负整数,至少匹配n次
System.out.println("至少匹配n次"+cc("^[a-z]{3,}$", "bbryyy"));//true
//匹配至少 n 次,至多 m 次:“{m,n}”
System.out.println("只能输入m-n位的数字:"+cc("^e{0,7}$", "eeeeeee"));//true
//匹配 x 或 y
System.out.println("匹配 x 或 y:"+cc("^x|y$","x"));//true
System.out.println("匹配 x 或 y:"+cc("^(x|y)44$","y44"));//true
//[xzy]字符集。匹配包含的任一字符
System.out.println("字符集。匹配包含的任一字符:"+cc("^[xzy]$", "x"));//true
System.out.println("字符集。匹配包含的任一字符:"+cc("^[xzy]$", "xy"));//false
//[^xzy]反向字符集。匹配未包含的任何单个字符
System.out.println("反向字符集。匹配未包含的任何字符"+cc("^[^xzy]$", "a"));//true
System.out.println("反向字符集。匹配未包含的任何字符"+cc("^[^xzy]$", "x"));//false
//[a-z]字符范围。匹配指定范围内的任何字符
System.out.println("符范围。匹配指定范围内的任何字符"+cc("^[a-z]$", "a"));//true
//[^a-z]反向字符范围。匹配不在指定范围内的任何字符
System.out.println("字符范围。匹配指定范围内的任何字符"+cc("^[^a-z]$","我"));//true
//\d数字字符匹配
System.out.println("数字字符匹配"+cc("\\d{3}", "051"));//true
//\D非数字匹配
System.out.println("非数字匹配"+cc("\\D", "e"));//true
//匹配单个中文
System.out.println("匹配中文:"+cc("[\u4e00-\u9fa5]", "我"));//true
//至少匹配一个中文
System.out.println("匹配中文:"+cc("[\u4e00-\u9fa5]{1,}", "我的"));//true
//匹配多个中文
System.out.println("匹配中文:"+cc("[\u4e00-\u9fa5]*", "我的鹅鹅鹅鹅鹅鹅"));//true
//匹配中文字母数字和_
System.out.println("匹配中文字母数字和_"+cc("^[\u4e00-\u9fa5a-zA-Z0-9]+$", "我我哦eA3"));//true
System.out.println("匹配中文字母数字和_"+cc("^[\u4e00-\u9fa5a-zA-Z0-9]+$", ""));//false
System.out.println("匹配中文字母数字和_"+cc("[^_]^[\u4e00-\u9fa5a-zA-Z0-9]*$", "2"));//true
//匹配中文字母数字和_,并判断长度
System.out.println("匹配中文字母数字和_,并判断长度"+cc("^[\u4e00-\u9fa5a-zA-Z0-9]{4,10}$", "e"));//false
System.out.println("匹配中文字母数字和_,并判断长度"+cc("^[\u4e00-\u9fa5a-zA-Z0-9]{4,10}$", "eeeee"));//true
//不能以下划线开头
System.out.println("不能以下划线开头"+cc("^(?!_)[a-z]+$", "_ad"));//false
System.out.println("不能以下划线开头"+cc("^(?!_)[a-z]+$", "dd"));//true
//不能以_开头或结尾 ,(?!_)不能以_开头,(?!.*?_$)不能以_结尾    !是非的意思   中间的$是与字符串结束的地方匹配  
//[a-zA-Z0-9_\u4e00-\u9fa5]+ 至少匹配一个汉字,字母,_,
System.out.println("不能以下划线开头和结尾"+cc("^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$","av我的_d" ));//true
//\w 匹配任何字类字符 等于[a-zA-Z0-9_]
System.out.println("\\w 匹配任何字类字符"+cc("^\\w+$", "sad09_"));//true
//2~4个汉字
System.out.println("2~4个汉字"+cc("^[\u4e00-\u9fa5]{2,4}$", "我的她"));//true
//最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式
System.out.println("最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式"+cc("^[\u4e00-\u9f5a]{0,7}$|^\\w{0,14}$", "eeew"));//true
System.out.println("匹配双字节字符(包括汉字在内)"+cc("[^x00-xff]", "我"));
//匹配空白行的正则表达式:ns*r 可以用来删除空白行
//匹配首尾空白字符的正则表达式:^s*|s*$ 
/*
* 匹配Email地址的正则表达式
* 1,下面所有的\\都是因为在双引号内,要多个引号转义,可都认为是单\
* 2,脱字符(^) 表示我们要使用这个表达式来检查以特定字符串开头的字符串
* 3,\w匹配任意单一字符,+表示前面条目至少出现一次
* 4,()表示一个组,[] 用来表示可以出现其中的任意一个字符,\.-是允许输入.和连字符-,?表示前面的.或-可以出现一次或一次不出现, \w是.或-后面必须紧跟其他字符
* 5,在()后面出现的* 号,表示前面的条目可以出现零次或多次
* 6,@ 字符代表其本身,没有任何其他意义,这个字符位于电子邮件地址和域名之间。
* 7,@ 字符后再次出现\w+ ,表示@ 后必须出现字符
* 8,在此之后,再次出现([\.-]?\w+)*, 表示电子邮件地址的后缀中允许出现点号或连字符。
* 9,在一对圆括号中建立另一个组(\.\w{2,3}), 表示我们希望找到一个点号,后面跟一些字符
* 10,正则表达式的末尾是一个美元符号$ ,表示匹配的字符串必须在这里结束
*/
System.out.println("匹配Email地址的正则表达式"+cc("^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$", "23@qq.com"));//true
System.out.println("匹配Email地址的正则表达式"+cc("^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$", "2.3@qq.com"));//true
System.out.println("匹配Email地址的正则表达式"+cc("^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$", "2.我3@qq.com"));//false	
System.out.println("匹配任何非空白字符"+cc("[\\S]", " "));//false
System.out.println("匹配任何空白字符"+cc("[^\\S]", " "));//true
System.out.println("匹配任何空白字符"+cc("[\\s]", " "));//true
//中括号[]里面有^表示取反 ,d{n}:n表示长度
System.out.println("匹配网址URL"+cc("[a-zA-Z]+://[^\\s]*", "http://dd"));//true
System.out.println("匹配国内电话号码"+cc("\\d{3}-\\d{8}|\\d{4}-\\d{8}","000-99999999"));//true
System.out.println("匹配国内电话号码"+cc("\\d{3}-\\d{8}|\\d{4}-\\d{8}","000-9999999"));//false
//腾讯QQ号从10000开始
System.out.println("匹配腾讯QQ号"+cc("[1-9][0-9]{4,}", "00000"));//false
System.out.println("匹配腾讯QQ号"+cc("[1-9][0-9]{4,}", "10000"));//true
//匹配中国邮政编码,邮政为6位数字
System.out.println("匹配中国邮政编码"+cc("[1-9]\\d{5}", "88888"));
System.out.println("匹配身份证"+cc("^[(\\d([X]?)\\d)]{15}|[(\\d([X]?)\\d)]{18}$", "44444449999999000X"));//true
System.out.println("匹配ip地址"+cc("^\\d+.\\d+.\\d+.\\d+", "1.1.1.1"));//true
System.out.println("匹配正整数 "+cc("^[1-9]+$", "23"));//true
System.out.println("匹配负整数"+cc("^-[1-9]+$", "23"));//false
System.out.println("匹配负整数"+cc("^-[1-9]+$", "-23"));//true
System.out.println("匹配小数"+cc("^\\d+([\\.]?\\d+)*$", "0"));//true
System.out.println("匹配小数"+cc("^\\d+([\\.]?\\d+)*$", "0."));//false
System.out.println("匹配小数"+cc("^\\d+([\\.]?\\d+)*$", "0.3"));//true
System.out.println("匹配小数点后两位"+cc("^(\\d+([\\.]?\\d){0,2})$", "0.35"));//true
System.out.println(cc("^(?!4)4$", "4"));
}
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 正则获取筛选内容
* @author Administrator
*
*/
public class Zhengze {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="{\"time_stamp\":\"2020-03-12 13:55:04\",asd,asfocomoom等\"产品类:W10002,哈哈";
String req="time_stamp\":\"(.*?)\".*产品类:(.*?),";
Pattern p=Pattern.compile(req);
Matcher matcher=p.matcher(str);
if(matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106065.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Python与数据库之学员管理系统「建议收藏」

    Python与数据库之学员管理系统「建议收藏」学院管理系统:一、系统需求二、准备程序⽂件1.分析2.创建程序⽂件三、书写程序1.main.py2.student.py3.managerSystem.py四.总结一、系统需求使⽤⾯向对象编程思想完成学员管理系统的开发,具体如下:系统要求:学员数据存储在MySQL数据库中系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。保存学院信息功能可以实现将学员信息每秒自动保存至数据库中。二、准备程序⽂件1.分析为了⽅便维护代码,⼀般⼀个⻆⾊

  • plot颜色设置_matlab plot颜色

    plot颜色设置_matlab plot颜色怎么分别设置点和线条的颜色?p.plot(color=”r,secondary_y=True,style=’-*’,linewidth=2)怎么把点和线设置为两种不同的颜色?

    2022年10月16日
  • 继电器驱动电路原理及注意事项[通俗易懂]

    继电器驱动电路原理及注意事项[通俗易懂]继电器驱动电流一般需要20-40mA或更大,线圈电阻100-200欧姆,因此要加驱动电路  1. 晶体管用来驱动继电器,必须将晶体管的发射极接地。具体电路如下:NPN晶体管                            PNP晶体管 NPN晶体管驱动时:当晶体管T1基极被输入高电平时,晶体管饱和导通,集电极变为低电平,因此继电器线圈通电,触点RL1吸

  • 解除织梦dedeCMS标题/关键词/ 简略标题长度限制听语音

    解除织梦dedeCMS标题/关键词/ 简略标题长度限制听语音

  • 阿里巴巴JVM调优工具arthas「建议收藏」

    阿里巴巴JVM调优工具arthas「建议收藏」下载下载全量包从Maven仓库下载最新版本,点击下载:从GithubReleases页下载https://github.com/alibaba/arthas/releases用as.sh启动解压后,在文件夹里有as.sh,直接用./as.sh的方式启动:./as.sh打印帮助信息:./as.sh-h用arthas-boot启动或者在解压后,在文件夹里有arthas-boot.jar,直接用java-jar的方式启动:java-jararth

  • zabbix监控哪些指标_zabbix监控爱快

    zabbix监控哪些指标_zabbix监控爱快前言面试中经常会被问到一些技术问题,面试官一方面是看你对于当前技术的点的掌握情况,另一方面是判断你是否在公司里干过,毕竟很多技术只要自学一下就能应付面试。今天我们来聊聊,面试中那些高频的问题,比如zabbix你都监控哪些参数。一.原理解释说到监控,在运维这个行业其实有很多开源的监控方案,目前最常见的就是zabbix+grafana,我工作那时候还是用cacti和nagios的比较多。还记得以前去面试,面试官来了一句,zabbix会搭建吗,会的话你在这搭建下,30分钟搭建出来就入职。不管

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号