zoukankan      html  css  js  c++  java
  • java正则表达式使用

    用正则表达式进行字符串校验,截取十分方便,项目开发中灵活的使用正则表达式能让你的代码简洁优雅并且不易出错。在实际的应用中,掌握以下几点知识就可以应付绝大多数的开发场景了。

    1、 字符串开始结束匹配:^$。

    ^abc$完全匹配字符串abc。

    2、 特定类型字符匹配:数字d,数字字母下划线w,空格s,任意字符.。

    3、 重复匹配:重复0次或1次?,重复1次及以上+,重复0次及以上*,重复m到n次{m,n},重复m次以上{m,}。

    d+表示有一个或多个数字组成的字符串,比如0,10,110。

    4、 单个字符或[],|。

    [ab]表示a或b,a|b表示a或b。

    5、 字符串或(|)。

    (ab|bc)表示ab或者bc。

    6、 非[^]。

    [^a]表示不是a的一个字符;[^ab]表示不是a且不是b的一个字符;[^ab]+表示一个或多个字符,且每个字符都不是a或b。

    Java中,String.matches(regex)进行字符串正则表达式校验;String.replaceAll()进行正则表达式替换;Pattern,Matcher则可以进行正则表达式匹配,查找,替换等一系列操作。下面是代码实例:

    package com.coshaho.learn.reg;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class RegexTest 
    {
    	public static void main(String[] args)
    	{
    		// 重复
    		String regex = "^\s*\d+{1,3}\w+ .?$";
    		String str = "  110hkx_ @";
    		System.out.println(str.matches(regex));
    		
    		// 字符或
    		regex = "^[abc]$"; // 等价于^a|b|c$
    		str = "b";
    		System.out.println(str.matches(regex));
    		
    		// 字符串或
    		regex = "^(ab|cd)$";
    		str = "ab";
    		System.out.println(str.matches(regex));
    		
    		// 非
    		regex = "^[^abc]$";
    		str = "d";
    		System.out.println(str.matches(regex));
    		
    		regex = "\[([^\[\]]+)\]\.\[([^\[\]]+)\]";
    		str = "[device].[cpu] + [interface].[tranffic] >= 2";
    		Pattern pattern = Pattern.compile(regex);
    		Matcher matcher = pattern.matcher(str);
    		
    		while(matcher.find())
    		{
    			System.out.println(matcher.group());
    			if(2 == matcher.groupCount())
    			{
    				System.out.println(matcher.group(1));
    				System.out.println(matcher.group(2));
    			}
    		}
    		
    		regex = "\d+";
    		str = "abc123def456hijk789xyz";
    		System.out.println(str.replaceAll(regex, " "));
    	}
    }
    
    
    /**
    输出值
    true
    true
    true
    true
    [device].[cpu]
    device
    cpu
    [interface].[tranffic]
    interface
    tranffic
    abc def hijk xyz
    **/
    

      

  • 相关阅读:
    页面性能:如何系统地优化页面?
    为什么CSS动画比JavaScript高效?
    Code Review
    浏览器中的页面之CSS是如何影响到渲染流程的
    async / await
    手撸Promise
    Promise
    宏任务和微任务
    有点恶心,随手写点儿
    关于判断用户输入的是不是int类型,这次没有正则表达式
  • 原文地址:https://www.cnblogs.com/coshaho/p/6653741.html
Copyright © 2011-2022 走看看