Bootstrap

【软构随记】Java中的正则表达式和中文字符问题

本学期前半学期刚刚学习了形式语言与自动机,其中最先讲到的就是正则语言,Java中的正则表达式与课堂上的内容形式上略有区别,但万变不离其宗。在构建某些依赖于许多其他ADT的对象时使用正则表达式可以大大减少客户端创建各种成员ADT的工作量。用户只需要输入一个符合特定格式的String,而我们可以将这个字符串按一定规则解析并使用输入的信息创建所需的对象。

用法

首先是Java中正则表达式的用法,需要导入java.util.regex:

Pattern regexPattern = Pattern.compile(regex);//regex是正则表达式,即“规则”
Matcher matcher = regexPattern.matcher(string);

之后调用matcher.matches()可以判断输入的string是否符合regex定义的规则。

如果并不需要检验多个字符串是否都符合同一表达式,而是只想知道一个字符串是否符合某个正则表达式时也可以使用一种更简洁的写法

string.matches(regex);

转义符

一些符号在正则表达式中是有其语法上的含义的,如引号,小括号,中括号和*,|等等,但有时我们也会需要以字符形式使用这些符号,这时就需要引入转义符"\"。有趣的是,并非所有符号前都只需要加一个转义符,有的需要加两个,在此举例如下:

  • 引号:\"(只需一个转义符)

  • 小括号:\\( (两个转义符)

最有效的确认如何输入的办法就是上手实操,ID

;