1. 程式人生 > >正則表示式 regexp

正則表示式 regexp

正則表示式:是一類字元所書寫出的模式(pattern) 學習正則表達更主要的就是學習對元字元的使用 表示必須用單雙引號概括起來,如果需要使用變數,必須用雙引號括起來,否則可以不加區分的使用單雙引號 基本正則表示式 用於字元匹配:  mysql不分大小寫。java中分大小寫
  • .:任意單個字元 
  • []:指定範圍內的任意單個字元
  • java中,mysql中
  • [0-9],[[:digit:]]
  • [a-z],[[:lower:]]
  • [A-Z],[[:upper:]]
  • 所有的字母:[[:alpha:]]
  • 字母+數字:[[:alnum:]]
  • 空格:[[:space:]] mysql中獨有
  • 標點符號:[[:putct:]]
  • [^]: 指定範圍外的任意單個字元
次數匹配:用來指定匹配其前面的字元的次數 
  • *:任意次 
  • 例=:x*y xxy xy y :y前面出現任意次數的x都可以被匹配到, 
補充:  匹配任意長度的任意字元:.*  前面字元出現0次或者1次的:?+ 指定次數,匹配m次:{m}  指定次數範圍,至少m次,至多n次: {m,n}  也可以至少m次: {m,}  至多n次: {0,n}  做變數換算需要使用”“ 一些例項
package regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
	public static void main(String[] args) {
		//查詢以Java開頭,任意結尾的字串
		 Pattern pattern = Pattern.compile("^Java.*");
		 Matcher matcher = pattern.matcher("Java不是人");
		 boolean b= matcher.matches();
		 //當條件滿足時,將返回true,否則返回false
		 System.out.println(b);
		 System.out.println("===========");
		 //以多條件分割字串時
		 Pattern pattern1 = Pattern.compile("[, |]+");
		 String[] strs = pattern1.split("Java Hello World Java,Hello,,World|Sun");
		 for (int i=0;i<strs.length;i++) {
		   System.out.println(strs[i]);
		 }
		 System.out.println("===========");
		 //文字替換(首次出現字元)
		 Pattern pattern2 = Pattern.compile("正則表示式");
		 Matcher matcher2 = pattern2.matcher("正則表示式 Hello World,正則表示式 Hello World");
		 //替換第一個符合正則的資料
		 System.out.println(matcher2.replaceFirst("Java"));
		 System.out.println("===========");
		//文字替換(出現全部字元)
		 Pattern pattern3 = Pattern.compile("正則表示式");
		 Matcher matcher3= pattern3.matcher("正則表示式 Hello World,正則表示式 Hello World");
		 //替換第一個符合正則的資料
		 System.out.println(matcher3.replaceAll("Java"));
		 //文字替換(置換字元)
		 System.out.println("===========");
		 Pattern pattern4 = Pattern.compile("正則表示式");
		 Matcher matcher4 = pattern4.matcher("正則表示式 Hello World,正則表示式 Hello World ");
		 StringBuffer sbr = new StringBuffer();
		 while (matcher4.find()) {
		   matcher4.appendReplacement(sbr, "Java");
		  
		 }
		 matcher4.appendTail(sbr);
		 System.out.println(sbr.toString());
		 //驗證是否為郵箱地址
		 String str="
[email protected]
"; Pattern pattern5 = Pattern.compile("[//w//.//-][email protected]([//w//-]+//.)+[//w//-]+",Pattern.CASE_INSENSITIVE); Matcher matcher5 = pattern.matcher(str); System.out.println(matcher5.matches()); System.out.println("==========="); //簡單的寫法boolean b1 = Pattern.matches("", ""); } }