zoukankan      html  css  js  c++  java
  • Java -- 正则表达式

    1. 正则表达式

    2. 使用正则表达式

    可以直接使用String提供的方法 也 可以使用Pattern 和 Matcher类,Pattern对象是正则表达式编译后在内存中的表示形式,因此正则表达式必须先编译为Pattern对象(可以多次利用),然后利用该对象创建对应的Matcher对象,执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可共用一个Pattern.

    例一:

    public class Main {		
    	public static void main(String[] args) throws IOException {
    		
    	String ip = "192-0-0-1";
    	System.out.println( ip.matches("\d*-\d*-\d*-\d*") ); //直接用String
    	System.out.println(ip.replaceFirst("\d*", "168"));
    	System.out.println(ip.replaceFirst("\d?", "168"));
    	String [] str = ip.split("-");
    	for( String temp : str )	
    		System.out.print(temp + "  ");
    	System.out.println();
    	
    	Pattern p = Pattern.compile("\d*");
    	Matcher m = p.matcher("192");
    	System.out.println( m.matches() );
    	
    	System.out.println( Pattern.matches("\d*-\d*-\d*-\d*", "192-168-1-1") ); //直接使用Pattern静态方法,不可复用
    	}	
    }

    例二:

    public class Main {		
    	public static void main(String[] args) throws IOException {
    		
    	Matcher m = Pattern.compile("\w+").matcher("hello java");
    	while(m.find())
    	{
    		System.out.println(m.group() + " from " + m.start() + " to " + m.end());
    	}
    	
    	int i=0;
    	while(m.find(i))
    	{
    		System.out.print(m.group() + "	");
    		i++;
    	}	
    	}	
    }

    输出结果:

    hello from 0 to 5
    java from 6 to 10
    hello   ello    llo     lo      o       java    java    ava     va      a

    例三:

    public class Main {		
    	public static void main(String[] args) throws IOException {
    		
    		String [] mails =
    			{
    				"12@163.com",
    				"xiangjie55@qq.com",
    				"xj626852095@qq.com",
    				"xiangjie55@163.com",
    				"12@163.com"
    			};
    		String mailRegEx = "\w{5,20}@\w+\.(com|org|cn|net)";
    		Pattern mailPattern = Pattern.compile(mailRegEx);
    		Matcher matcher = null;
    		for( String mail : mails )
    		{
    			if( matcher==null )
    			{
    				matcher = mailPattern.matcher(mail);
    			}
    			else
    			{
    				matcher.reset(mail);
    			}
    			
    			if( matcher.matches() )
    			{
    				System.out.println(mail + " format is OK");				
    			}
    			else
    			{
    				System.out.println(mail + " format is not OK");	
    			}			
    		}
    	}	
    }

    输出结果:

    12@163.com format is not OK
    xiangjie55@qq.com format is OK
    xj626852095@qq.com format is OK
    xiangjie55@163.com format is OK
    12@163.com format is not OK


     

  • 相关阅读:
    打印二叉树和为某一值的路径
    顺时针打印数组
    算术表达式
    堆内存与栈内存详解
    【腾讯校招在线考试附加题】将一个10进制数转换为四位定长的36进制数
    反转链表
    记录github出错及解决方案
    centos7操作防火墙
    无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]解决方法
    MyBatis联表查询——别名方式
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648076.html
Copyright © 2011-2022 走看看