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年6月28日
    29
  • 升降压电路的工作原理

    升降压电路的工作原理1.升压电路也叫自举电路,是利用自举升压二极管,自举升压电容等电子元件,使电容放电电压和电源电压叠加,从而使电压升高,有的电路升高的电压能达到数倍电源电压。开关直流升压电路(即所谓的boost或者step-up电路)原理,theboostconverter,或者叫step-upconverter,是一种开关直流升压电路,它可以是输出电压比输入电压高。基本电路图如图所示假定那个开关(三极管或者mos管)已经断开了很长时间,所有的元件都处于理想状态,电容电压等于输入电压。下面要分充电和放电两个部分来

    2022年6月20日
    59
  • mysql左连接去重

    mysql左连接去重表如下createtableTB_BATCH(  ID                  int(11)notnullauto_increment,  BATCH_NO             VARCHAR(32)comment’批次号’,  CONTRACT_ID         int(11)comment’合同ID’,  CONTRACT

    2022年6月5日
    25
  • 【Java基础知识 15】java反射机制原理详解

    【Java基础知识 15】java反射机制原理详解一、类的加载与ClassLoader的理解1、加载将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.class对象。2、链接将Java类的二进制代码合并到JVM的运行状态之中的过程。验证:确保加载的类信息符合JVM规范,没有安全方面的问题; 准备:正式为类变量分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区内进行分配; 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程。3、

    2022年8月24日
    4
  • eclipse中启动Tomcat,8080端口被占用

    eclipse中启动Tomcat,8080端口被占用eclipse中启动Tomcat,8080端口被占用一、造成这样的原因很可能是你多起开启了Tomcat,并且没有终止。二、解决的方法:1.重启eclipse,或者重启电脑。2.更改端口号(默认8080)2.1需要更改的文件在你的本地、Tomcat\conf\server.xml。用工具(notepad++、Dreamweaver,记事本都可以、主要是方便定位)打开这个文件。2.2把…

    2025年7月21日
    0
  • tf.placeholder() is not compatible with eager execution的解决方法「建议收藏」

    tf.placeholder() is not compatible with eager execution的解决方法「建议收藏」最近安装了TensoFlow2.0及以上的版本都发现啊出现这个问题:RuntimeError:tf.placeholder()isnotcompatiblewitheagerexecution.这是因为在运行**tf.compat.v1.placeholder(dtype,shape=None,name=None)**的时候急切执行了这条语句,但是我们一般都是在一…

    2022年7月13日
    9

发表回复

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

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