欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java正则表达式详解.docx

    • 资源ID:93872303       资源大小:19.85KB        全文页数:7页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java正则表达式详解.docx

    Java正则表达式详解正则表达式(Regular Expression )又称正规表示法、常规表示法,在代码中常简写为regex、regexp或RE ,它是计算机科学的一个概念。正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操 作,是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符(如字符 az )以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一 个或多个字符串。String类里也提供了如下几个特殊的方法。boolean matches(String regex):判断该字符串是否匹配指定的正则表达式。String replaceAII(String regex, String replacement):将该字符串中所有匹配 regex的子串替换成replacementoString replaceFirst(String regex, String replacement):将该字符串中第一个匹 配regex的子串替换成replacementoString split(String regex):以regex作为分隔符,把该字符串分割成多个子串。上面这些特殊的方法都依赖于Java提供的正则表达式支持,除此之外,Java还提供了Pattern和Matcher两个类专门用于提供正则表达式支持。 很多读者都会觉得正则表达式是一个非常神奇、高级的知识,其实正则表达式是一种非常简 单而且非常实用的工具。正则表达式是一个用于匹配字符串的模板。实际上,任意字符串都 可以当成正则表达式使用。例如"abc",它也是一个正则表达式,只是它只能匹配"abc" 字符串。如果正则表达式仅能匹配"abc"这样的字符串,那么正则表达式也就不值得学习了。正则 表达式作为一个用于匹配字符串的模板,将某个字符模式与所搜索的字符串进行匹配。本文 简单了解一下如何使用正则表达式来操作字符串。正则表达式支持字符创建正则表达式就是创建一个特殊的字符串。正则表达式所支持的合法字符如表1所示。下1正则表达式所支整合法字符字符解释X |字符x (x可代表任何合法的字符)Omnn 八进制数Omnn所表示的字符xhh十六进制值Oxhh所表示的字符uhhhh十六进制值Oxhhhh所表示的Unicode字符t制表符(“u0009" )n 新行(换行)符(u000A,)r回车符('u000D')f换页符('u000C,)a报警(bell)符('u0007' )eEscape符(u001B)cx x对应的的控制符。例如,cM匹配Ctrl-Mo x值必须为AZ或az之一。除此之外,正则表达式中有一些特殊字符,这些特殊字符在正则表达式中有其特殊的用途,比如前面介绍的反斜线' O如果需要匹配这些特殊字符,就必须首先将这些字符转义,也就是在前面添加一个反斜线。正则表达式中的特殊字符如表2所示。表2正则表达式中的慢学符特普可 一 说明I符$匹配一行的结尾。要匹配$字符本身,请使用$八匹配一行的开头。要匹配八字符本身,请使用'人0标记子表达式的开始和结束位置。要匹配这些字符,请使用'(和)用于确定中括号表达式的开始和结束位置。要匹配这些字符,请使用口'和 )用于标记前面子表达式的出现频度。要匹配这些字符,请使用'和指定前面子表达式可以出现零次或多次。要匹配*字符本身,请使*用*指定前面子表达式可以出现一次或多次。要匹配+字符本身,请使+ 用+指定前面子表达式可以出现零次或一次。要匹配?字符本身,请使9. 用?匹配除换行符n之外的任何单字符。要匹配.字符本身,请使用.用于转义下一个字符,或指定八进制、十六进制字符。如果需匹配'字符,请用指定两项之间任选一项。如果要匹配I字符本身,请使用|将上面多个字符拼起来,就可以创建一个正则表达式。例如:"u0041" / 匹酉己 A"u0061t" 匹酉己己制表符"?"/ 匹配?注意:可能大家会觉得第一个正则表达式中怎么有那么多反斜杠?这是由于Java字符串中 反斜杠本身需要转义,因此两个反斜杠( )实际上相当于一个(前一个用于转义)。上面的正则表达式依然只能匹配单个字符,这是因为还未在正则表达式中使用"通配符", "通配符"是可以匹配多个字符的特殊字符。正则表达式中的“通配符"远远超出了普通通配符的功能,它被称为预定义字符,正则表达式支持如表3所示的预定义字符。表3 字符预登字1说明.可以匹配任何字符d匹配09的所有数字D匹配非数字s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行 符等s匹配所有的非空白字符w匹配所有的单词字符,包括09所有数字、26个英文字母和下画线W匹配所有的非单词字符上面的7个预定义字符其实很容易记忆,其中:d是digit的意思,代表数字。s是space的意思,代表空白。w是word的意思,代表单词。d、s、w的大写形式恰好匹配与之相反的字符。有了上面的预定义字符后,接下来就可以创建更强大的正则表达式了。例如:cwt /可以匹配cat、cbt、cctx cOts c9t等一批字符串ddd-ddd-dddd / 匹配如 000-000-0000 形式的电话号码在一些特殊情况下,例如,若只想匹配af的字母,或者匹配除ab之外的所有小写字母, 或者匹配中文字符,上面这些预定义字符就无能为力了,此时就需要使用方括号表达式,方 括号表达式有如表4所示的几种形式。方括号表达式表4方括号表达式说明表示枚举表示范围:例如abc表示a、b、c其中任意一个字符;gz表示g、z其中 任意一个字符例如a-f表示范围内的任意字符;u0041-u0056表示十六 进制字符u0041到u0056范围的字符。范围可以和枚举结合使 用,如a-cx-z,表示 用c、xz范围内的任意字符 表示求否:例如Aabc表示非a> b、c的任意字符;八a-f表示不是af范围内的任意字符例如a-z&&def是az和def的交集,表示d、e表示“与”运 算:&&fa-z&&人be是az范围内的所有字符,除b和c之外ad-z a-z&&m-p是az范围内的所有字符,除mp范围之夕卜 的字符表示“并”运并运算与前面的枚举类似。例如a-dm-p表示a-dm-p方括号表达式比前面的预定义字符灵活多了,几乎可以匹配任何字符。例如,若需要匹配所 有的中文字符,就可以利用u0041-u0056形式因为所有中文字符的Unicode 值是连续的,只要找出所有中文字符中最小、最大的Unicode值,就可以利用上面形式来 匹配所有的中文字符。正则表达式还支持圆括号,用于将多个表达式组成一个子表达式,圆括号中可以使用或运算 符例如,正则表达式(public)|(protected)|(private)用于匹配Java的三个访问控 制符其中之一。除此之外,Java正则表达式还支持如表5所示的几个边界匹配符。表5边界匹配符边界匹配符说明行的开头1$行的结尾b单词的边界B非单词的边界A输入的开头G前一个匹配的结尾Z输入的结尾,仅用于最后的结束符z输入的结尾前面例子中需要建立一个匹配000-000-0000形式的电话号码时,使用了ddd -WdWdWd -dddd正则表达式,这看起来比较烦琐。实际上,正则表达 式还提供了数量标识符,正则表达式支持的数量标识符有如下几种模式。Greedy (贪婪模式):数量表示符默认采用贪婪模式,除非另有表示。贪婪模式的 表达式会一直匹配下去,直到无法匹配为止。如果你发现表达式匹配的结果与预期的不符, 很有可能是因为你以为表达式只会匹配前面几个字符,而实际上它是贪婪模式,所以会一直 匹配下去。Reluctant (勉强模式):用问号后缀(?)表示,它只会匹配最少的字符。也称为 最小匹配模式。Possessive (占有模式):用加号后缀(+ )表示,目前只有Java支持占有模式,通常比较少用。三种模式的数量表示符如表6所示。表6三种模式的数量表示符贪婪模式勉强模式占用模式说明X?X?x?+ nX表达式出现零次或一次X*X*?x*+X表达式出现零次或多次X+ 1x+?1x+ nX表达式出现一次或多次|xnXn?Xn +X表达式出现n次Xn,Xn,?Xn, +X表达式最少出现n次X n, mX n, m ?Xn, m +X表达式最少出现n次,最多出现m次关于贪婪模式和勉强模式的对比,看如下代码:String str = "hellojava!M;/贪婪模式的正则表达式System.out.println(str.replaceFirst("w*" z "");输出-Java!/勉强模式的正则表达式System.out.println(str.replaceFirst("w*?" z输出hello, java!当从"hell。java!"字符串中查找匹配w*子串时,因为w*使用了贪婪模式,数量表示符*会一直匹配下去,所以该字符串前面的所有单词字符都被它匹配到,直到遇到空格,所以 替换后的效果是 , Java!”;如果使用勉强模式,数量表示符*会尽量匹配最少字符,即匹配0个字符,所以替换后的结果是hello , java!。

    注意事项

    本文(Java正则表达式详解.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开