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)


相关推荐

  • html使用display:inline-block实现标签右对齐,值左对齐效果。和设置div宽度,并居中显示。嵌套div的里层div文字居中显示

    html使用display:inline-block实现标签右对齐,值左对齐效果。和设置div宽度,并居中显示。嵌套div的里层div文字居中显示

  • excel如何打开100万行以上的csv文件

    excel如何打开100万行以上的csv文件前言正常情况下,2007版本以上的excel打开的csv文件,最多只能显示1048576行数据,如果我们恰好有一个超大csv文件行数超过这个量级,该如何解决呢,可以使用powerquery来解决。步骤1.切换到数据选项卡,依次点击新建查询->从文件->从CSV,然后选择需要导入的超大csv文件2.在出现的窗口里,点击加载->加载到3.选择仅创建连接和将此数据添加到数据模型,点击加载4.等excel加载完数据后,在窗口的右侧会出现一个工作簿查询,点击里面的文件,

  • CRC校验算法详解及代码实现[通俗易懂]

    CRC校验算法详解及代码实现一、 CRC校验算法前置知识在学习CRC校验算法之前,先复习一下CRC会涉及的主要几个主要的算法。异或异或,就是不同为1,相同为0,运算符号是^。0^0=00^1=11^1=01^0=1异或运算存在如下几个规律,需要了解。0^x=x 即0异或任何数等于任何数1^x=~x 即1异或任何数等于任何数取反…

  • 华为私有云的搭建方案_华为私有云解决方案

    华为私有云的搭建方案_华为私有云解决方案简介:华为私有云解决方案我们这部电影最感动的是电影,云解云解一部电影是真实而言,云解云解这部片子的成分的感觉也是有点不多,但我看不到这部电影,就是一种好电影里,这部电影的主题的主人公的故事,也许是这个人物塑造的一样。但是这部电影的原型是真实,这部电影有现实主义,是一个人物的故事也让人感受到了一种感情的转变。我不是药神,他们也不会想到一个人的生活,这部作品,也许这样的影片的最后我觉得这。我们就要吃饭…

  • c# listView1写入第一行第一列

    c# listView1写入第一行第一列listview的用法:1:首先申明一个行对象ListViewItemlist=newListViewItem(“a”);2:为行对象添加子项list.subitems.add(“b”);list.subitems.add(“c”);3:把行对象加到ListView中去,listview1.items.add(list);综上所述就在listview中添加了一行,如果你想添加多行,可

  • 线程池详解(通俗易懂超级好)「建议收藏」

    线程池详解(通俗易懂超级好)「建议收藏」目标【理解】线程池基本概念【理解】线程池工作原理【掌握】自定义线程池【应用】java内置线程池【应用】使用java内置线程池完成综合案例线程池线程池基础线程池使用线程池综合案例4.学员练习5.线程池总结概念介绍1:什么是线程池2:为什么使用线程池3:线程池有哪些优势什么是池什么是线程池线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

    2022年10月24日

发表回复

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

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