Java正则表达式

正则表达式一般用于字符串匹配、查找、替换、分割。例如:从网页中找出email地址,IP地址是否正确,从网页中找出连接等等。

符号意思
\|反斜杠
\t间隔(’\u0009’)
\n换行(’\u000A’)
\r回车(’\u000D’)
\d数字 等价于[0-9]
\D非数字 等价于[^0-9]
\s空白符号 等价于[\t\n\x0B\f\r]
\S非空白符号 等价于[^\t\n\x0B\f\r]
\w单独字符 等价于[a-zA-Z_0-9]
\W非单独字符 等价于[^a-zA-Z_0-9]
\f换页符
\eEscape
\b一个单词的边界
\B一个非单词的边界
\G前一个匹配的结束
^限制开头 ^java 条件限制为以Java为开头字符
$限制结尾 java$ 条件限制为以java为结尾字符
.限制除\n以外任意一个单独字符 java.. 条件限制为java后除换行外任意两个字符
[a-z]条件限制在小写a to z范围中一个字符
[A-Z]条件限制在大写A to Z范围中一个字符
[a-zA-Z]条件限制在小写a to z或大写A to Z范围中一个字符
[0-9]条件限制在小写0 to 9范围中一个字符
[0-9a-z]条件限制在小写0 to 9或a to z范围中一个字符
[0-9[a-z]]条件限制在小写0 to 9或a to z范围中一个字符(交集)
[^a-z]条件限制在非小写a to z范围中一个字符
[^A-Z]条件限制在非大写A to Z范围中一个字符
[^a-zA-Z]条件限制在非小写a to z或大写A to Z范围中一个字符
[^0-9]条件限制在非小写0 to 9范围中一个字符
[^0-9a-z]条件限制在非小写0 to 9或a to z范围中一个字符
[^0-9[a-z]]条件限制在非小写0 to 9或a to z范围中一个字符(交集)
*限制条件为特定字符出现0次以上,例如, J* 0个以上J;.* 0个以上任意字符;J.*D J与D之间0个以上任意字符
+限制条件为特定字符出现1次以上。 J+ 1个以上J ; .+ 1个以上任意字符; J.+D J与D之间1个以上任意字符。
?限制条件为特定字符出现有0或1次以上。例如,JA? J或者JA出现。
{}限制条件为连续出现指定次数字符。 例如, J{2} JJ; J{3} JJJ; J{3,} JJJ,JJJJ,JJJJJ…..(3次以上J并存);J{a,b} 有a个以上,b个以下的J
|限制条件为两者取一。例如,Java

举例

  • 在字符串包含验证时
Pattern pattern = Pattern.compile("^Java.*");
Matcher matcher = pattern.matcher("Java不是人。");
boolean b = matcher.matches();
System.out.print(b+"");

/**
* 结果为: true
*/
  • 以多条件分割字符串时
        Pattern pattern = Pattern.compile("[,|]+");
        String[] strs = pattern.split("Java Hello World  Java,Hello,,World|Sun");
        for (String str:strs) {
            System.out.print(str+" ");
        }


        /**
         * 结果为: Java Hello World  Java Hello World Sun 
         */
  • 文字替换(首次出现字符)
        Pattern pattern = Pattern.compile("正则表达式");
        Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
        System.out.print(matcher.replaceFirst("Java"));


        /**
         * 结果为: Java Hello World,正则表达式 Hello World
         */
  • 文字替换(全部)
        Pattern pattern = Pattern.compile("正则表达式");
        Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
        System.out.print(matcher.replaceAll("Java"));


        /**
         * 结果为: Java Hello World,Java Hello World
         */
  • 文字替换(置换字符)
        Pattern pattern = Pattern.compile("正则表达式");
        Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
        StringBuffer sbr = new StringBuffer();
        while (matcher.find()){
            matcher.appendReplacement(sbr,"Java");
        }
        matcher.appendTail(sbr);
        System.out.print(sbr.toString());


        /**
         * 结果为: Java Hello World,正则表达式 Hello World
         */
  • 验证是否为邮箱地址
        String str = "www.ceponline@yahoo.com.cn";
        Pattern pattern = Pattern.compile("\\w+([-+.]\\w+)*@([\\w\\-]+\\.)+[\\w-]+");
        Matcher matcher = pattern.matcher(str);

        System.out.print(matcher.matches() + "");


        /**
         * 结果为: true
         */
  • 去除html标记
        Pattern pattern = Pattern.compile("<[^>]+>");
        Matcher matcher = pattern.matcher("<a href=/\"index.html/\">主页</a>");

        System.out.print(matcher.replaceAll(""));


        /**
         * 结果为: 主页
         */
  • 查找html中对应条件字符串
        Pattern pattern = Pattern.compile("href=/\"(.+?)/\"");
        Matcher matcher = pattern.matcher("<a href=/\"index.html/\">主页</a>");

        if (matcher.find()) {
            System.out.print(matcher.group(1));
        }

        /**
         * 结果为: index.html
         */
  • 截取http://地址
        Pattern pattern = Pattern.compile("https?://[\\w.]*");
        Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");

        if (matcher.find()) {
            System.out.print(matcher.group());
        }

        /**
         * 结果为: http://dsds
         */

比较常用的正则表达式

字符代表意义
[\u4e00-\u9fa5]匹配中文字符
\n\s*\r匹配空白行,可用来删除空白行
^\s*|\s*$匹配首尾空白字符
\w+([-+.]\w+)*@\w+([-+.]\w+)*验证Email地址
https?://[^\s]*匹配URL地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值