zoukankan      html  css  js  c++  java
  • 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 空白字符:[ x0Bf ]
    S 非空白字符:[^s]
    w 单词字符:[a-zA-Z_0-9]
    W 非单词字符:[^w]
    字符
    x 字符 x
    \ 反斜线字符
    n 带有八进制值 0 的字符 n (0 <= n <= 7)
    nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
    mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
    xhh 带有十六进制值 0x 的字符 hh
    uhhhh 带有十六进制值 0x 的字符 hhhh
    制表符 ('u0009')
    新行(换行)符 ('u000A')
    回车符 ('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 }
  • 相关阅读:
    GEF: 图形拖拽处理
    【矩阵快速幂】bzoj1297 [SCOI2009]迷路
    【扩展欧几里得】NOIP2012同余方程
    【高精度乘法】NOIP2003麦森数
    【数论·错位排列】bzoj4517 排列计数
    【数论】Lucas
    【NOIP2012】疫情传递
    【NOIP2012】旅行计划
    【Manacher算法】求最长回文串的优秀算法
    【Tarjan】洛谷P3379 Tarjan求LCA
  • 原文地址:https://www.cnblogs.com/flying607/p/3442846.html
Copyright © 2011-2022 走看看