Java正则表达式

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

符号 意思
|反斜杠
\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 换页符
\e Escape
\b 一个单词的边界
\B 一个非单词的边界
\G 前一个匹配的结束
^ 限制开头 <font color=orange>^java 条件限制为以Java为开头字符</font>
$ 限制结尾 <font color=orange>java$ 条件限制为以java为结尾字符</font>
. 限制除\n以外任意一个单独字符 <font color=orange>java.. 条件限制为java后除换行外任意两个字符</font>
[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次以上,<font color=orange>例如, J* 0个以上J;.* 0个以上任意字符;J.*D J与D之间0个以上任意字符</font>
+ 限制条件为特定字符出现1次以上。 <font color=orange>J+ 1个以上J ; .+ 1个以上任意字符; J.+D J与D之间1个以上任意字符。</font>
? 限制条件为特定字符出现有0或1次以上。<font color=orange>例如,JA? J或者JA出现。</font>
{} 限制条件为连续出现指定次数字符。 <font color=orange>例如, J{2} JJ; J{3} JJJ; J{3,} JJJ,JJJJ,JJJJJ.....(3次以上J并存);J{a,b} 有a个以上,b个以下的J</font>
限制条件为两者取一。<font color=orange>例如,Java Hello Java或Hello</font>

举例

  • 在字符串包含验证时
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地址
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,732评论 6 539
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,214评论 3 426
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,781评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,588评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,315评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,699评论 1 327
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,698评论 3 446
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,882评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,441评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,189评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,388评论 1 372
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,933评论 5 363
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,613评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,023评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,310评论 1 293
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,112评论 3 398
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,334评论 2 377

推荐阅读更多精彩内容

  • 1.正则表达式介绍 正则表达式算起来也是一个很庞大的语言系统,在所有的开发语言中基本都支持正则表达式,它可以很方便...
    babybus_superdo阅读 2,589评论 3 6
  • Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点) 英文句点符号:匹配单个任意字符。...
    红姑娘阅读 4,383评论 0 2
  • 正则表达式是编程中的一个难点和重点,下面就列举一些JAVA中常用的正则表达式大全。以供同学们参考。 方法/步骤 1...
    Kingtester阅读 2,827评论 0 1
  • 欢迎关注微信公众号“畅畅上学记”
    罗环环阅读 264评论 1 8
  • 十一月,希望是幸运的。所有想要的都通通回来,希望十一月的付出,在十二月可以有惊喜。十一月,太阳当空照,十二月,花儿...
    稀子阅读 213评论 0 0