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)
上一篇 2022年4月23日 下午10:20
下一篇 2022年4月23日 下午10:40


相关推荐

  • java 文本关键字查找功能原理和代码

    java 文本关键字查找功能原理和代码java 文本关键字查找功能原理和代码

    2022年4月23日
    41
  • LTE:下行峰值速率计算

    LTE:下行峰值速率计算LTE 的下行峰值速率 peakdatarate 可定义为满足以下条件时的最大 throughput nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 整个带宽均分配给一个 UE nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 使用最高阶的 MCS nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 使用可支持的最大天线数在实际中 需要考虑典型的无线信道开销 如控制信道 参考信号 保护间隔等 对于 FDD 而言 峰值速率的计算方法如下 1slo

    2026年3月16日
    1
  • app软件版本号命名规则_文件版本号命名规则

    app软件版本号命名规则_文件版本号命名规则为什么需要规范APP命名?当我们在需求及业务明确后,产品及设计已经做出了对应的文档及UI图,那么进入研发阶段开始编码实现功能,当功能实现的差不多了之后,期间会需要签出不同的包作为展示或测试,不管当前的进度处于什么阶段,签出对应安装包的时候都会对其进行命名并发送给测试人员。一般往往通过命名,就可以大概知道当前签出的包处于哪个版本阶段,Alpha阶段?Beta阶段?R

    2025年10月21日
    4
  • 汇编 常用_汇编指令详解

    汇编 常用_汇编指令详解
    常见的基本汇编书籍 

    Windows.环境下32位汇编语言程序设计(第2版) 
    http://www.happycampus.cn/docs/957100583237@hc10/275980/ 

    汇编语言编程艺术 

    Intel汇编语言程序设计(第四版) 

    Intel汇编语言程序设计(第五版)范例 
    http://download.csdn.net/source/1523425 

    2022年10月13日
    7
  • Windows 下 配置 ngrok ngrok使用教程

    Windows 下 配置 ngrok ngrok使用教程

    2026年3月15日
    3
  • 为新开的餐厅设计网站html,21个餐厅食品网站设计欣赏

    为新开的餐厅设计网站html,21个餐厅食品网站设计欣赏21 个餐厅食品网站设计欣赏 10 月 28 2012 评论 Sponsor 随着网络发展 现在各种各样的行业搭建起自家的官方网站来 当然餐厅饮食行业也不例外 这样除了增加企业形象外 也是一种很好的营销手段 今天为大家分享 21 个餐厅食品网站设计 大部分都有一个共同的特点 首页都是彩用美味的照片素材 有些用来作 banner 有些用来作为网页的大背景 这是一个很好的方案 因为是餐饮行业 用自家的食品来吸引用户是

    2026年3月18日
    3

发表回复

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

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