正则表达式

正则表达式的规则

A:字符
  x 字符 x。举例:'a'表示字符a
  \\ 反斜线字符。
  \n 新行(换行)符 ('\u000A') 
  \r 回车符 ('\u000D')
  
 B:字符类
  [abc] a、b 或 c(简单类) 
  [^abc] 任何字符,除了 a、b 或 c(否定) 
  [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) 
  [0-9] 0到9的字符都包括
  
 C:预定义字符类
  . 任何字符。我的就是.字符本身,怎么表示呢? \.
  \d 数字:[0-9]
  \w 单词字符:[a-zA-Z_0-9]
   在正则表达式里面组成单词的东西必须有这些东西组成
   
 D:边界匹配器
  ^ 行的开头 
  $ 行的结尾 
  \b 单词边界
   就是不是单词字符的地方。
   举例:hello world?haha;xixi
   
 E:Greedy 数量词 
  X? X,一次或一次也没有 比如""空串 就是没有
  X* X,零次或多次  大于等于1次 都算多次
  X+ X,一次或多次
  X{n} X,恰好 n 次 
  X{n,} X,至少 n 次 
  X{n,m} X,至少 n 次,但是不超过 m 次 

举个例子
判断输入的电话号码是否合法
要求:必须是11位数字且必须是1开头

正则表达式:

String regx="[1-9][0-9]{4,14}";

传统方法:

private static boolean checkQQNumber(String qqNum) {
     boolean flag=false;
    if(qqNum.length()>=5&&qqNum.length()<=15){
        //校验不能以0开头
        if(!qqNum.startsWith("0")){
            //校验每一个位是否是数字
            for(int i=0;i<qqNum.length();i++){
                char ch = qqNum.charAt(i);
                if(ch>='0'&&ch<='9'){
                    flag=true;
                }else{
                    flag=false;
                    break;//遇到不是数字立马结束循环
                }
            }
        }else{
            flag=false;
        }
    }else{
        flag=false;
    }
    return flag;
}

正则表达式的分割功能split()方法
public String[] split(String regex)
如果想要去除一个“=”,就可以使用split()方法

  String str="1+1==2";

方法的返回值是一个字符串数组,所以输出这个字符串数组即可

String[] strings = str.split("=");
   System.out.println(strings2[0]);

正则表达式的替换功能
public String replaceAll(String regex,String replacement)
将字母全部替换成*

  String str1="sdafgkaswzswsa";
  String str2=str1.replaceAll("[a-z]",‘*’);
  System.out.println(str2);

Pattern和Matcher
模式器用来封装正则表达式。
匹配器用来封装要匹配的数据, 能够去匹配 等一系列操作。

   典型的调用顺序是 
  Pattern p = Pattern.compile("a*b");
  Matcher m = p.matcher("aaaaab");
  boolean b = m.matches();   

find()和group()

find()对字符串进行匹配,匹配到的字符串可以在任何位置.
group()获取当前位置的字符串。
先使用find()方法找到才能使用group()方法获取

String str="da jia ting wo shuo, jin tian yao xia yu, bu shang wan zi xi, gao xing bu?";
String regx="\\b[a-z]{3}\\b";
//获取模式器
Pattern p = Pattern.compile(regx);
//获取匹配器
Matcher m = p.matcher(str);
while (m.find()){
        String s = m.group();
        System.out.println(s);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值