正则表达式(Java)
JAVA中的反斜杠 \
:
注意: 在java中反斜杠 \ 本身具有特殊含义,表转义字符,所以要想打出 \ 就需要\\
(很多语言都是这样)
所以,作为转义字符,有\n
表换行 …
要想输入\
,就需要\\
, System.out.print("\\")
—–> \
常用的正则表达符号
.
匹配所有单个字符\
反斜杠,将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,”n”匹配字符”n”。”\n”匹配换行符。序列”\\“匹配”\“,”\(“匹配”(“^
$
分别表示从开始位置匹配和结尾位置匹配*
零次或多次匹配前面的字符或子表达式。例如,zo* 匹配”z”和”zoo”+
一次或多次匹配前面的字符或子表达式?
零或一次匹配前面~~- {n}表示正好匹配n次,{n,}表示至少匹配n次,{n,m}表示匹配 >=n,<=m
- (regex):括号表示捕获所匹配的字符串
- [xyz]:方括号表示字符集,匹配匹配包含的任一字符[^xyz]反向字符集
- [a-z] 表示所有小写字母
\b
匹配一个字边界,即字与空格间的位置,如”er\b”匹配”never”中的”er”,但不匹配”verb”中的”er”。\d
表示数字,等效[0-9]\D
非数字\s
匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。S
非空格\w
匹配任何字类字符,包括下划线。与”[A-Za-z0-9_]”等效。
Pattern 与Matcher类
使用;pattern 用其静态方法compile(regex) 创建,有split等方法
matcher可以用pattern.matcher(String)来创建,有matches相关,捕获方法
注意
find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。
matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。
必须先match.find(),然后才会捕获匹配,然后match.group()获取find结果,
可以while(match.find())
来一直搜索所有匹配到的
分组
从正则表达式左侧开始,每出现一个左括号“(”记做一个分组,分组编号从1开始。0代表整个表达式。
主要用于matcher.find(),,, matcher.group(index)
group(0)特指所匹配到的整个字符串,不计入group的length