黑马程序员——正则表达式

——- android培训java培训、期待与您交流! ———-
正则表达式,又称正规表示法、常规表示法,计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher.
Pattern是一个正则表达式经编译后的表现模式。 在java中,通过适当命名的Pattern类可以容易确定String是否匹配某种模式.模式可以象匹配某个特定的String那样简单,也可以很复杂,需要采用分组和字符类,如空白,数字,字母或控制符.因为Java字符串基于统一字符编码(Unicode),正则表达式也适用于国际化的应用程序.
Pattern类的方法简述
方法 说明
static Pettern compile(String regex,int flag) 编译模式,参数regex表示输入的正则表达式,flag表示模式类型(Pattern.CASE_INSENSITIVE 表示
不区分大小写)
Matcher match(CharSequence input) 获取匹配器,input时输入的待处理的字符串
static boolean matches(String regex, CharSequence input) 快速的匹配调用,直接根据输入的模式regex匹配input
String[] split(CharSequence input,int limit) 分隔字符串input,limit参数可以限制分隔的次数

Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定Pattern实例的模式控制下进行字符串的匹配工作。
Matcher类的方法简述
方法 说明
boolean matches() 对整个输入字符串进行模式匹配.
boolean lookingAt() 从输入字符串的开始处进行模式匹配
boolean find(int start) 从start处开始匹配模式
int groupCount() 返回匹配后的分组数目
String replaceAll(String replacement) 用给定的replacement全部替代匹配的部分
String repalceFirst(String replacement) 用给定的replacement替代第一次匹配的部分
Matcher appendReplacement(StringBuffer sb,String replacement) 根据模式用replacement替换相应内容,并将匹配的结果添加到sb当前位置之后
StringBuffer appendTail(StringBuffer sb) 将输入序列中匹配之后的末尾字串添加到sb当前位置之后.
Pattern和Matcher的

public static void main(String[] args) {
        String str = "how do you do but i am a student haha";

        //第一步,预编译正则规则
        Pattern p = Pattern.compile("\\b[a-zA-Z]{3}\\b");
        //第二步,将字符串和规则匹配
        Matcher m = p.matcher(str);

        //找一次,获取一次
        while(m.find()){
            System.out.println(m.group());
        }
    }

正则表达式常见写法
1.字符类
[abc] 字符必须是abc其中1个
[a-z] 字符必须是小写字母
[A-Z] 字符必须是大写字母
[a-zA-Z] 字符必须是字母
[^abc] 字符必须不是abc其中1个
[^a-z] 字符必须不是小写字母
[^a-zA-Z] 字符不能是字母
例1:
验证QQ号码
QQ号码要求:
0不能开头,全数字
长度 5-12
使用正则表达式


    public static boolean method_1(){
        String number = "123456789012";
        //使用String类方法matches
        // boolean matches(String regex) 
        // 告知此字符串是否匹配给定的正则表达式。 
        return number.matches("[1-9][0-9]{4,11}");
    }

2.预定义字符类
. 匹配任何字符 “192.168.1.100”.split(“\.”)
\d 匹配所有数字 \d
\D 匹配非数字 \D
\w 匹配单词字符 \w 什么是单词字符 \w == [a-zA-Z0-9_]
\W 匹配非单词字符 \W \W == [^a-zA-Z0-9_]

3.数量词
X* 字符出现零次或多次
X? 字符出现一次或者一次也没有
X+ 字符出现一次或者多次
X{n} 字符正好出现n次
X{n,} 字符最少出现n次
X{n,m} 字符出现最少n次,但不超过m次

例2:
使用正则,验证邮箱地址是不是合法
验证不出来,这个地址是不是真的存在
abcd123@sina.com.cn 263 sohu yahoo google
@符号前 ,数字,字母 _
@符号后,域名
.前 数字 字母小写
.后 字母

public static void test(){
        String email = "abcd123@sina.com.cn";
        boolean b = email.matches("[a-zA-Z0-9_]+@[a-z0-9]+(\\.[a-z]+)+");
        System.out.println(b);
    }

4.边界匹配器
^ 匹配行的开头
$ 匹配行的结尾
\b 匹配单词 where are a you from 英文单词的边界

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值