• 正则表达式:Regular Expression


         Java处理正则表达式的类所在包为java.util.regexp,其中Pattern为封装正则表达式的模式(Pattern=Pattern.compile(String regex)),Matcher为处理字符串的匹配器(Matcher=Pattern.matcher(String input)),MatchResult为正则匹配的一个结果(Matcher.find(); MatchResult=Matcher.toMatchResult()),通常使用Matcher.find|group就可以遍查输入串了。

         正则表达式的语义成分包括:

    1,转义字符,如\\反斜杠、\r\n\t\f回车换行等、\0nnn八进制数、\xff十六进制数、\uhhhhUnicode字符;

    2,字符集,如[abc]、[^abc]非abc、[a-zA-Z0-9]大小写英文字母及数字、[a-z&&[^g-k]]除g到k之外的小写字母,\d\s\w数字空白字母,\D\S\W非数字非空白非字母(这里的反斜杠需要转义为\\才能编译),有些POSIX字符集可能有用,\p{ASCII}、\p{Punct}标点、\p{Cntrl}控制符、\p{XDigit}十六进制字符,特殊集合,[\u4e00-\u9fa5]中文字符、^[1-9]\d{5}$邮政编码等;

    3,逻辑词及边界匹配,如XY顺序、X|Y或、(X)分组、(?:X)分组但不占用分组编号、\n之前匹配的分组(如(ab)c+\1表示首尾都是ab,中间全是c的串模式)、$i已匹配的分组对应值(如查找(ab)(c+)(de)替换为$3$2$1表示前后调换ab和de),^起始(^(ab)以ab开头的句子)、$结束($(ab)以ab结尾的句子)、\b单词匹配。

    4,贪婪及匹配次数,*0次以上、?0或1次、+1次以上、{n}n次、{n,}n次以上、{n,m}n至m次,?勉强匹配(如abc*?匹配abccd时只得ab),+贪婪匹配(如abc*+匹配abccd则得abcc)。

         常用正则表达式:

    1,网址:URL=protocol://hostname[:port]/path/[;parameters][?query][#fragment],这个模式串表现不错:(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]

    2,邮箱:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

         使用编辑器的正则表达式处理文本:

    1,去掉空行,替换^([\s&&[^\n\r]]*)$(\r\n) 或\n[\s| ]*\r为空;

    2,去掉首尾空格,替换([\s&&[^\r\n]]*)(.*?)([\s&&[^\r\n]]*)$(\r\n)为$2$4;使用分组及\n$i可方便地交换匹配串。

    3,去掉多余的TODO,替换// TODO.*$(\r\n)([\s&&[^\r\n]]*)为空;

  • 相关阅读:
    ISO14229:2013 之 通过标志输入输出控制InputOutputControlByIdentifier (0x2F)
    ISO14229:2013 之 清除诊断信息ClearDiagnosticInformation (0x14)
    ISO14229:2013 之 通过标志写数据WriteDataByIdentifier (0x2E)
    Git常用命令及方法大全
    High concurrency Architecture Detailed _ Architecture
    Data structures and algorithms in Java, Part 1: Overview
    Java代码优化
    详解二分查找算法
    服务容灾
    分布式限流之一:redis+lua 实现分布式令牌桶,高并发限流
  • 原文地址:https://www.cnblogs.com/xingqi/p/2052024.html
Copyright © 2020-2023  润新知