zoukankan      html  css  js  c++  java
  • java常用正则表达式

    1、特殊字符

    注意:若要原样匹配下列字符,需要首先转义字符,即在下列特殊字符前加,例如需要匹配 + ,则使用表达式 +

    字符 释义 示例
    * 零次或多次匹配前面的字符或子表达式,等效于{0,} za*与z和zaa等匹配
    + 一次或多次匹配,等效于{1,} za+与za和zaaa等匹配
    ? 零次或多次匹配,等效于{0,1} za?只能与z和za匹配
    ^

    1、匹配字符串开始的位置,

    2、如果将^作为括号内第一个字符,则会对字符集求反

    1、^d{3}与搜索的字符开始处的三个数字匹配

    2、[^abc]表示除a、b、c三个字符外的其他所有字符

    $ 匹配字符串结束的位置 d{3}$表示与搜索字符串结尾处的3个数字匹配
    . 匹配除了 换行符外的所有单个字符 a.c可以与abc、a-c等诸如此类的字符匹配
    [] 标记括号表达式的开头和结尾 [1-4]匹配1到4的整数,[^aAeEiIoOuU]匹配所有非元音字符
    {} 标记限定符表达式的开头和结尾 a{2,3}匹配2到3个a组成的字符串
    () 标记子表达式的开始和结尾 a(d)可以与a0到a9匹配
    | 指示可以在两个或多个项中选择 z|food可以与z和food匹配,(z|f)ood可以与zood和food匹配
    / 表示JScript中的文本正则表达式的开头和结尾,在第二个“/”后添加单字符标志可以指定搜索行为。 /abc/gi 是与“abc”匹配的 JScript 文本正则表达式。 g(全局)标志指定查找模式的所有匹配项,i(忽略大小写)标志使搜索不区分大小写。
    将下一字符标记为特殊字符、文本、反向引用、八进制转义符 与换行符匹配,(与(匹配,与匹配

     

    2、元字符

    字符释义示例
     与一个字符串边界匹配,即字与空格间的位置 er 与“never”中的“er”匹配,但与“verb”中的“er”不匹配。
    B 非边界字匹配。 erB 与“verb”中的“er”匹配,但与“never”中的“er”不匹配。
    d 数字匹配,等效于[0-9] d{2}匹配两位数字
    D 非数字匹配,等效于[^0-9] D{2}匹配除了数字外的两个字符
    w 与以下任意字符匹配:A-Z、a-z、0-9 和下划线。等效于 [A-Za-z0-9_]。 在搜索字符串“The quick brown fox…”中,w+ 与“The”、“quick”、“brown”和“fox”匹配。
    W 与除数字字母下划线的字符匹配 在搜索字符串“The quick brown fox…”中,W+ 与“…”和所有空格匹配。
    [xyz] 字符集,表示与x、y、z三个中任意一个匹配 [abc] 与“plain”中的“a”匹配。
    [^xyz] 反向字符集,与非指定的其他字符匹配 [^abc] 与“plain”中的“p”、“l”、“i”和“n”匹配。
    [a-z] 字符范围,匹配指定范围之内的字符 [a-z] 与“a”到“z”范围内的任何小写字母字符匹配。
    [^a-z] 反向字符范围,匹配除指定范围之内的所有字符 [^a-z] 与不在范围“a”到“z”内的任何字符匹配。
    {n} 正好匹配 n 次。 n 是非负整数。 o{2} 与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。
    {n,} 至少匹配 n 次。 n 是非负整数。 o{2,} 与“Bob”中的“o”不匹配,但与“foooood”中的所有“o”匹配。
    {n,m} 匹配至少 n 次,至多 m 次。 n 和 m 是非负整数,其中 n <= m。 逗号和数字之间不能有空格。 在搜索字符串“1234567”中,d{1,3} 与“123”、“456”和“7”匹配。

     

    3、非打印字符

    字符释义
    f 换页符
    换行符
    回车符
    s 如何空白字符,其中包括空格,制表符换页符等
    S 如何非空白字符
    Tab字符

     

     

    4、优先级顺序

     

    运算符说明
    转义符
    ), (?:), (?=), [] 括号和中括号
    *、+、?、{n}、{n,}、{n,m} 限定符
    ^、$、任何元字符 定位点和序列
    | 替换

     示例:判断一个字符串中是否包含某个子字符串

    判断字符串中是否包含前五天的日期:

    //.:除
    外的所有所有单个字符
    //*:出现0次或多次
    //|:或者,括号中的意思是出现下列五个日期中的一个
    //正则表达式的意思是:字符串中出现下列五个日期,并且结尾可以出现0个或多个
    换行符
    String regex= ".*((2021-06-23)|(2021-06-22)|(2021-06-21)|(2021-06-20)|(2021-06-19)).*
    *";
    String str = "阀值告警:当前时间 2021-06-23 14:17:37,出水PH值 数值为 7.773884 低于下限值:9
    ";
    System.out.println(str.matches(regex));  //true

    参考资料: http://msdn.microsoft.com/zh-cn/library/ae5bf541

     

  • 相关阅读:
    开放的Web平台才是是我们想要的——HTML5变为HTML
    Web字体格式介绍及浏览器兼容性一览
    E百科 | 基于MEC的边缘AI服务
    技术改变生活 浅谈阿里云混合云的探索与实践
    阿里云CDN产品经理陈章炜:边缘创新技术和落地实践
    什么是微内核架构设计?
    技术干货 | 深度解构 Android 应用面临紧急发版时的救星方案:mPaaS 热修复——DexPatch
    如何接地气地接入微前端?
    阿里云原生应用安全防护实践与 OpenKruise 的新领域
    函数计算镜像加速:从分钟到秒的跨越
  • 原文地址:https://www.cnblogs.com/zhangcaihua/p/13425156.html
Copyright © 2011-2022 走看看