java 正則舉例

劍握在手發表於2013-11-26
Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n
X{n,} X,至少 n
X{n,m} X,至少 n 次,但是不超過 m

 

預定義字元類
. 任何字元(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
字元
x 字元 x
\\ 反斜線字元
\0n 帶有八進位制值 0 的字元 n (0 <= n <= 7)
\0nn 帶有八進位制值 0 的字元 nn (0 <= n <= 7)
\0mnn 帶有八進位制值 0 的字元 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 帶有十六進位制值 0x 的字元 hh
\uhhhh 帶有十六進位制值 0x 的字元 hhhh
\t 製表符 ('\u0009')
\n 新行(換行)符 ('\u000A')
\r 回車符 ('\u000D')
\f 換頁符 ('\u000C')
\a 報警 (bell) 符 ('\u0007')
\e 轉義符 ('\u001B')
\cx 對應於 x 的控制符

忽略大小寫:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
1.方法1:
public class Test {

public static void main(String[] args) throws Exception {
String str="forM";

String regEx="form"; //表示a或f

Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); //表示整體都忽略大小寫

Matcher m=p.matcher(str);

boolean rs=m.find();
System.out.println(rs);
}

}
//方法2:java正規表示式:
(?i)abc 表示abc都忽略大小寫
a(?i)bc 表示bc忽略大小寫
a((?i)b)c 表示只有b忽略大小寫

 

 

 

import java.util.regex.*;
class Regex
{
 public static void main(String[] args)
 {
  String str = "faaafbbdbddd";
  String[] strArry = str.split("(.)\\1+");//以連續出現兩次以上的字元為分界點,分割字串
  for(String s:strArry)
   System.out.println(s);
  System.out.println("-------------------------華麗分割線-----------------------------------");

  System.out.println(str.replaceAll("(.)\\1+","$1"));//置換匹配的子字串“$”可以用來取第一個引數中的組
  System.out.println(str.matches(".*[d]{3}.*"));//判斷整個字串是否匹配
  System.out.println("-------------------------華麗分割線-----------------------------------");

  String str2 = "aaa,ff,ddd,sdss,dsa,dgdgdg,sss";
  String reg = "\\b[a-z]{3}\\b";//取三個連續的,兩邊有邊界分割
  Pattern p = Pattern.compile(reg);//匹配規則封裝
  Matcher m = p.matcher(str2);//將匹配規則和要匹配的字串組合生成匹配引擎
  //System.out.println("m.matches():"+m.matches());這一句會使匹配的遊標後移到第一個不匹配的位置:第一個f
  while(m.find())//引擎可以方便的根據自己的字串和匹配規則執行一些操作,比如find:找到下一個匹配的子字串
   /*獲取、輸出匹配的欄位、起始位置、終了位置+1*/
   System.out.println(m.group()+
   "...m.start():"+m.start()+
   "...m.end():"+m.end());
 }
}

 

示例三:

 1 public class RegTest {
 2     public static void main(String[] args) throws Exception {
 3         String str="formfirnformsajfowiehongform"; 
 4 
 5         String regEx="f.*?m"; //
 6 
 7         Pattern p=Pattern.compile(regEx); //表示整體都忽略大小寫
 8 
 9         Matcher m=p.matcher(str); 
10 
11         int i = 0;
12         while(m.find()) {
13             System.out.println(m.group()+"------起始位置:"+m.start()+";結束位置"+m.end()+";長度:"+(m.end()-m.start()));
14             i++;
15         }
16         System.out.println("字串form在str中出現的次數為:"+i);
17 
18         System.out.println(str.substring(4, 12));
19     }
20 }

 

相關文章