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
    **/
    

      

  • 相关阅读:
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    AtCoder Grand Contest 013 题解
    AtCoder Grand Contest 012 题解
    AtCoder Grand Contest 011 题解
    AtCoder Grand Contest 010 题解
    AtCoder Grand Contest 009 题解
    NOIP2017 Day2 题解
    博客园主题备份
    多项式全家桶
  • 原文地址:https://www.cnblogs.com/coshaho/p/6653741.html
Copyright © 2011-2022 走看看