正则表达式

来源:互联网 发布:淘宝客服工作感想 编辑:程序博客网 时间:2024/06/05 07:04

近期做项目遇到了正则表达式,再次仔细看了一下他的语法,先分享出来与大家共享

1、元字符


元字符匹配

2、出现频次

3、定位符

4、范围符


5.常见正则表达式


1)、简单域名IP获取

一级域名:(.com等前只有一个的url)

[a-zA-Z0-9-]{0,62}(\\.[a-zA-Z0-9]{0,62})
域名可以有IP:
^((http://)|(https://))?[a-zA-Z0-9-]{0,62}(\\.[a-zA-Z0-9-]{0,62})+(\\.[a-zA-Z0-9]{0,62})$
域名

(http://)|(https://)?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}

使用

String line = "13DB0F33805013885294366EA42DBFB9;安大师;-21.2-2.246.78";String pattern = "[a-zA-Z0-9-]{0,62}(\\.[a-zA-Z0-9-]{0,62})+(\\.[a-zA-Z0-9]{0,62})$";Pattern p=Pattern.compile(pattern);Matcher m=p.matcher(line);if(m.find()){//m.mathes()  完全匹配 line="-127.0.0.1"System.out.println(m.group());}

2)分组()的使用

通过分组,我们可以抓取到分组内匹配的字符

a、例如:定义字符串

String line="abrt-ccpp hook is installed..";Pattern install=Pattern.compile("(\\S+)\\s+\\S+\\s+is installed.*");//group(1)  abrt-ccppMatcher  isInstalled= install.matcher(line);if(isInstalled.matches()) {  System.out.println(isInstalled.group());//abrt-ccpp hook is installed  System.out.println(isInstalled.group(1));//hook 最外的()  有空格//  System.out.println(isInstalled.group(2));//hook}
结果:group(1)  abrt-ccpp。isInstalled.group()永远是匹配全部的

b、修改模式

Pattern install=Pattern.compile("\\S+\\s+(\\S+)\\s+is installed.*");
结果:group(1)  hook  。捕获哪一个就在哪一个上添加()
c、与b比较

Pattern install=Pattern.compile("\\S+\\s+(\\S)+\\s+is installed.*");
group(1)  k只能捕获到k,因为只会限制到了k,没有包围+
d、嵌套分组

Pattern  install = Pattern.compile("((\\S+)\\s+)+is installed.*");
group(1)得到hook [有空格,第一层括号], group(2) 得到hook (无空格,第二层括号) 

取出来数字3

        String s="Live datanodes (3):";        Pattern p=Pattern.compile("Live datanodes \\((\\d)\\):");        Matcher m=p.matcher(s);        if(m.matches()) {            System.out.println(m.group(1));        }


原创粉丝点击