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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ARM 架构简介_芯片arm架构

    ARM 架构简介_芯片arm架构一小时教你学会ARM架构原创 2017年10月31日00:00:002499本文来自作者 刘盼 在 GitChat 上分享,「阅读原文」查看交流实录「文末高能」编辑|奕迅架构的演变历史我们首先介绍ARMLtd,这里先说的是公司而不是架构。ARM的发展历史非常久远,超乎许多人的想象。首先,我们提供一些背景信息,ARM成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司…

    2022年10月14日
    2
  • 2019徐州站网络赛总结

    2019徐州站网络赛总结

    2021年9月28日
    58
  • 渗透之——使用reaver傻瓜式破解wifi之利用路由器WPS漏洞

    渗透之——使用reaver傻瓜式破解wifi之利用路由器WPS漏洞跟这篇破解教程一样,网上破解教程多是基于路由器的WPS漏洞破解,但是这样的路由器只占少数。一般wifi是依据WPA/WPA2加密的,因此想要破解一般的wifi,还得破解这个协议,虽然近期这个协议也被破解了,不过也是很不容易的。刚入门破解,不是很熟悉,在网上找各种破解资料,终于破解成功了临近工作室的wifi,沾沾自喜~本文破解wifi针对一些路由器的WPS(Wi-fiprotectedset…

    2022年5月16日
    50
  • 动态规划之背包问题及输出背包具体方案[通俗易懂]

    动态规划之背包问题及输出背包具体方案[通俗易懂]题型1:LintCode92.背包问题题目:在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i]。分析:dp[i][j]:当背包总重量为j且目前有i个物品时,背包最多装满dp[i][j]的空间。      状态转移方程为:dp[i][j]=max{dp[i-1][j-A[i-1]]+A[i-1],dp[i-1][j]},其中dp[i-1][j-A[…

    2022年7月26日
    12
  • idea中关闭eslint[通俗易懂]

    idea中关闭eslint[通俗易懂]file->setting搜索eslint将Enable选项勾选掉

    2022年6月3日
    100
  • IntelliJ IDEA 部署Tomcat服务器

    IntelliJ IDEA 部署Tomcat服务器一、部署TomcatFile—>Build,Executtion,Deployment—>Application Servers—>Apply—>ok然后点击Run—>Edit Configurations点击“+”,然后选择Tomcat Servers—>local选择Development  再选择Server  ,热处理那个选项是下…

    2022年6月13日
    31

发表回复

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

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