首先,我们要知道正则表达式是什么东西
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,
来组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
即用一种自定义的逻辑模式来对字符串进行匹配。
2、正则表达式的用处既然科学家提出、并规范了这个模式,那必然有其神奇的作用:
1、灵活性、逻辑性和功能性非常强;
2、可以迅速地用极简单的方式达到字符串的复杂控制。
3、可以判断给定的字符串是否符合正则表达式的过滤逻辑,即是否匹配这个模式
4、可以通过正则表达式,从字符串中获取我们想要的特定部分。
1、逻辑判断
public static void main(String[] args) {
String pattern = "12345678";
String regex = "1[234]\d{6}";
System.out.println(pattern.matches(regex));
//输出结果为true
}
我们先通过观察一段代码,看看最简单的一段正则表达式的匹配过程。
首先是给定一段pattern(模式串),在给定regex(正则表达式),然后我们调用了pattern的matches函数
而matches函数实际上就是做匹配的过程。那什么是匹配呢?我们会发现regex里面是一堆奇奇怪怪的字符**“1[234]\d{6}”**
这正是正则表达式的奥妙所在,简单来说这是正则表达式的一种逻辑语法,通过对逻辑的判断来进行匹配
比如"1[234]d{6}",开头的1就代表第一个数字必须是1,[234]就代表第二个数字为2或3或4,而"\d{6}"则代表接下来将出现6个数字。而输出结果是true,也就说明模式串是符合正则表达式的逻辑模式的。
2、替换功能
public static void main(String[] args) {
String pattern = "12345678";
String regex = "[128]";
String s = "\$";
System.out.println(pattern.replaceAll(regex, s));
//输出结果为$$34567$
}
通过pattern的replaceAll函数,传入regex = "[128]"和s="\$",
我们将模式串中的1或2或8替换成了$
3、分割功能
public static void main(String[] args) {
String pattern="12345678";
String regex = "[357]";
String[] res = pattern.split(regex);
for(String i : res) {
System.out.println(i);
}
//输出结果为12 4 6 8
}
通过pattern的split函数,传入regex = "[357]",我们将模式串中的3或5或7为分割线,将字符串分成了12、4、6、8四个字符串
4、以下例举了一些regex中常用的元字符:



