一、基础知识
正则表达式是描述字符序列的一串字符。这种通用的描述被称为模式,可用于在其他字符序列中查找匹配。Java的正则表达式由Pattern和Matcher组成,Pattern用于定义正则表达式,Matcher用于在其他序列中匹配模式。
二、语法
正则表达式由常规字符、字符类、通配符及量词构成。
常规字符根据自身进行匹配。
字符类是一组字符,通过在方括号之间放置字符可指定字符类。
通配符可以匹配任意字符。
量词决定表达式将被匹配的次数。
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
* | 匹配前面字符或子表达式零次或多次 |
+ | 匹配前面字符或子表达式一次或多次 |
? | 匹配前面字符或子表达式零次或一次 |
{n} | 匹配前面的字符或子表达式n次 |
{n,} | 匹配前面的字符或子表达式至少n次 |
{n,m} | 匹配前面的字符或子表达式至少n次、至多m次 |
? | 在限定符之后表示匹配模式是非贪心的,匹配尽可能短的字符串。默认的贪心模式匹配尽可能长的字符串。 |
A|B | 匹配A或B |
[ABC] | 匹配ABC中的任意字符 |
[^ABC] | 匹配非ABC的任意字符 |
[A-Z] | 匹配A-Z内的任意字符 |
三、示例
import java.util.regex.Matcher; import java.util.regex.Pattern; class Solution { public static void main(String[] args) { Pattern pattern = Pattern.compile("[a-z]+"); Matcher matcher = pattern.matcher("Hello World"); System.out.println(matcher.matches());//不匹配子串 matcher.reset(); while (matcher.find()) {//匹配子串 System.out.println(matcher.start());//获取当前匹配的开头引索 System.out.println(matcher.end());//获取当前匹配的末尾引索 System.out.println(matcher.group());//获取最后一个匹配的字符串 } String str = matcher.replaceAll(""); System.out.println(str); } }
分割字符串。
import java.util.Arrays; import java.util.regex.Pattern; class Solution { public static void main(String[] args) { Pattern pattern = Pattern.compile("[,.!]"); String[] strings = pattern.split("JetBrains!IntelliJ,IDEA."); System.out.println(Arrays.toString(strings)); } }