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));
		}
	}

}

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker-compose 集群_docker集群搭建

    docker-compose 集群_docker集群搭建前言实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器。我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有

    2022年7月28日
    9
  • 蛇形填数&开灯问题 精讲

    蛇形填数&开灯问题 精讲

    2021年9月27日
    45
  • 流程引擎应用及分析论文_微服务 流程引擎

    流程引擎应用及分析论文_微服务 流程引擎工作流引擎目前比较热门的有Activiti、Flowable等,Flowable是Activiti(Alfresco持有的注册商标)的fork版本。下面就两种工作流引擎做一个比较和入门分析。

    2022年10月20日
    4
  • 请简述什么是Vue组件化开发_vuecli和webpack

    请简述什么是Vue组件化开发_vuecli和webpack前言真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程演变过程1.0一般情况下vue都是单页面开发,所以项目中只会有一个inde

    2022年7月30日
    3
  • DHCP协议解析

    DHCP协议解析DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理一、

    2022年5月23日
    49
  • dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器

    dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器修改前必读:1、修改编辑器后会造成以前发过的帖子再次进行修改时(也就是编辑帖子操作)出现很多被DZ重写过的html标签,不方便进行修改,所以尽量在安装DZ后立刻进行修改。(当然,如果你有能力重写代码的话就可以无视啦)2、修改前请先在本地进行尝试或备份相关文件。需要修改的文件:templatedefaultforumpost_editor_body.htmtemplatedefaultforumpo…

    2022年5月12日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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