正则表达式

正则表达式

    • 元字符
        • 限定符
        • 选择匹配符
        • 分组组合和反向引用符
        • 字符匹配符
        • 定位符
    • 分组、捕获、反向引用

前情提要:

  • ⭐在java的正则表达式中,两个\\代表其他语言中正则表达式的一个\
  • ⭐贪婪模式和非贪婪模式
    • 贪婪模式:尽可能按照正则表达式匹配最大子字符串(JAVA默认是贪婪模式)
    • 非贪婪模式:按照正则表达式匹配最小子字符串

元字符

限定符
  • \\ 转义字符,用于转义正则表达式的特殊字符(.*+()$/\?[]^{}),也可以使用[]包裹特殊字符。
  • * 指定字符重复出现0次或n
    示例: (abc)* 表示包含任意多个abc的字符串,0次也行,如:123、abc、abcabc
  • + 指定字符重复出现1次或n
    示例: m+(abc)* 表示至少一个m开头的字符串,后面带0-多个abc,如:m、mabc、mmabc
  • ? 指定字符重复出现0次或1
    示例: m+abc? 表示至少一个m开头的字符串,后面带abc可出现0次或1次,如:mab、mabc、mmabc
    注意: 当此字符紧随其他限定符(*、+、?、{n}、{n,}、{n,m}),匹配模式为非贪婪匹配
  • {n} 指定字符必须出现n
    示例: [abcd]{3} 表示a、b、c、d任意字符必须出现3次,如:aaa、bbb、ccc、ddd、abc、acd、bcd
  • {n,} 指定字符至少出现n次
    示例: [abcd]{3,} 表示a、b、c、d任意字符至少出现3次,如:aaa、bbbb、ccccc、dddddd、abc、abcd、abcda
  • {n,m} 指定字符至少出现n次,但不能超过m次,包含边界
    示例: [abcd]{3,5} 表示a、b、c、d任意字符至少出现3次,但不能超过5次,如:aaa、bbbb、ccccc、abc、abcd、abcda
  • (?i) 查找字母不区分大小写
    示例: (?i)abc 表示abc不区分大小写,a(?i)bc 表示bc不区分大小写,a((?i)b)c 表示只有b不区分大小写
选择匹配符

| 匹配 | 之前和之后的字符
示例: ab|cd 表示abcd两个子串

分组组合和反向引用符
  • ⭐捕获分组:
    • (partition) 非命名捕获
    • (?partition)(?'groupname'partition) 命名捕获
  • ⭐非捕获分组:
    • (?:partition)
      示例: industr(?:y|ies),相当于industry|industriesindustr(y|ies)
    • (?=partition)
      示例: Windows(?=95|98|NT|2000),可以匹配Windows 95、Windows 98、Windows NT、Windows 2000中的Windows
    • (?!partition)
      示例: Windows(?!95|98|NT|2000),可以匹配除Windows 95、Windows 98、Windows NT、Windows 2000中以为的其他Windows
字符匹配符
  • [] 可接收的字符列表
    示例: [efgh] 表示e、f、g、h任意1个字符
  • [^] 不接收的字符列表
    示例: [^abc] 表示除a、b、c以外的任意1个字符
  • ⭐连字符
    示例: A-Z 任意单个大写字母
  • . 匹配除\n以外的任意字符
    示例: a..ba开头以b结尾,中间包括两个任意字符,长度为4的字符串,如:aacb、a34b、a#*b
  • \\d 匹配单个数字字符,相当于[0-9]
    示例: \\d{3}(\\d)? 表示包含3个或4个数字的字符串,如:123、1234
  • \\D 匹配单个非数字字符,相当于[^0-9]
    示例: \\D(\\d)* 表示以单个非数字字符开头,后接任意个数字字符串,如:A、B1234
  • \\w 匹配单个数字、大小写字母以及下划线字符,相当于[0-9a-zA-Z_]
    示例: \\d{3}\\w{4} 表示以3个数字开头,后接4(0-9a-zA-Z)长度为7的字符串,如:123aabb、345a4d7
  • \\W 匹配单个非数字、大小写字母以及下划线字符,相当于[^0-9a-zA-Z_]
    示例: \\W+\\d{2} 表示以至少一个非数字字母字符开头,2个数字字符结尾的字符串,如:#12、$#*44
  • \\s 匹配任何空白字符(空格、制表符等)
  • \\S 匹配任何非空白字符(空格、制表符等)
定位符
  • ^ 指定起始字符
    示例: ^[0-9]+[a-z]* 以至少一个数字开头,后接任意小写字母的字符串,如:1aa、1、1bb
  • $ 指定结束字符
    示例: ^[0-9]\\-[a-z]+$ 以至少一个数字开头,中间接-,后面接至少一个小写字母结尾,如:1-a、1-b
  • \\b 匹配目标字符串的边界
    示例: han\\b 表示可以匹配字符串尾部或者空格前面的han,如:aahan、aahan bbhan
  • \\B 匹配目标字符串的非边界

分组、捕获、反向引用

  • ⭐分组
    一个()里面的东西我们称之为分组
  • ⭐捕获
    按照正则表达式从左往右数,第一个()标记分组1,第二个()标记分组2,依次类推
  • ⭐反向引用
    正则表达式内部引用使用\\组号,正则表达式外部引用使用$组号

你可能感兴趣的:(开发工具,正则表达式)