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
开头的字符串,后面带ab
,c
可出现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
表示ab
和 cd
两个子串
(partition)
非命名捕获(?partition)
或(?'groupname'partition)
命名捕获(?:partition)
industr(?:y|ies)
,相当于industry|industries
、industr(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..b
以a
开头以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
,依次类推\\
组号,正则表达式外部引用使用$
组号