正则表达式
概念
正则表达式描述了一种字符串匹配的模式,也称规则表达式。常用于检索、替换符合指定模式(规则)的文本。
简介
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
特点
- 灵活性、逻辑性和功能性非常强;
- 可以迅速地用极简单的方式达到字符串的复杂控制。
- 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
主流语言
delphi、Scala、PHP、C#、Java、C++、Objective-c、Swift、VB、Javascript、Ruby以及Python等。
语法一
正则表达式是由普通字符与特殊字符组成的字符串。
普通字符:
原义字符、非打印字符
特殊字符:
元字符:* + ? $ ^ . | \ ( ) { } [ ]
语法二
非打印字符:
语法三
特殊字符:
语法四
预定义字符:
Java正则表达式
java.util.regex包。
Pattern类:表示一个正则表达式,或者说匹配模式。
Matcher类:Pattern对象matcher()方法的返回值,表示正则表达式对输入字符串的匹配结果。
使用String的split()方法提取以“|”分割的字符串:
String的split()支持正则表达式作为参数。
“|”是正则表达式元字符,必须进行转义。
示例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegex {
public static void main(String[] args) {
String s="13062285560";//匹配150开头的手机号
Pattern p = Pattern.compile("^1(3|8)(?<a>\\d{9})");//匹配规则
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println(m.group("a"));
}
}
}
输出结果: