对于初次接触正则表达式的人来说,可能不是很好理解正则表达式到底是个啥。下面我们从正则表达式“是什么“、”能干啥“、”怎么用“三个角度来对正则表达式来进行介绍。
是什么
一个正则表达式其实就是一种字符串”模式“,所有符合这个“模式”的字符串都可以被这个模式匹配,所以它实际上表示了“一系列”字符串。想一下你在电脑里利用搜索查找文件的时候,想要找到所有的md文件,要搜索“*.md”,这个模式表示的就是文件名“前面可以有任意多个字符,最后三个字符是.md”的所有文件,所以我们在搜索文件的时候,所有文件名满足这个模式的文件都会被搜索出来。
正则表达式不仅限于某一种语言,但是在使用正则表达式的各种程序和类库之间,表达式语法未能完全标准化,每种语言中都有些细微的差别。这里我们介绍Java中的正则表达式。
能干啥
正则表达式能够根据某个指定模式来匹配、查找、替换和分隔一个字符串。在对文本文件进行处理的时候正则表达式经常起到非常重要的作用。在文本文件中,各个数据以某种格式存储,我们在利用这些数据的时候就需要对这些数据进行提取。例如一个拓扑文件中,一行的内容包括“节点A的cpu信息 节点B的cpu信息 AB之间的链路带宽”,这时我们就需要根据空格对这一行的字符串进行分割提取。
怎么用
Java提供了java.util.regex包对正则表达式进行支持。java.util.regex 包主要包括以下三个类:
Pattern 类:
pattern 对象是一个正则表达式的编译表示,用于创建一个匹配模式。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,首先调用其公共静态方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
一个简单示例:
Pattern p=Pattern.compile("a*b");//创建一个匹配模式
Matcher m=p.matcher("aaaaaaaab");//创建一个以上面创建的模式为基础的待匹配对象
boolean b=m.matches();//判断是否匹配