java 正则举例

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 }

 

posted @ 2013-11-26 10:56  剑握在手  阅读(425)  评论(0编辑  收藏  举报
返回顶部↑