当我们需要对字符串进行判断的时候,使用正则表达式能大大提高编程效率。比如,当我们需要找出所有“像邮箱”的字符串(包含"@" "." ".com",且顺序一致),我们需要一个某种模式的工具,这个时候正则表达式就派上用场了。下面让我们来详细了解一下:
定义:
正则表达式 (regular expression) 又称正规表达式、常规表达式,是对字符串操作的一种逻辑公式。
就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
其中包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。通过正则表达式,我们可以用来搜索、编辑或处理文本。虽然繁琐,但功能强大,能很好的提高效率。
特点:
1. 灵活性、逻辑性和功能性非常强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
语法及说明
使用方法
java.util.regex 包主要包括以下三个类:
Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
代码格式如下:
// 创建patten对象
Pattern p = Pattern.compile("^this\\s+is\\s+text");
// 创建matcher对象
Matcher m = p.matcher(str);
// 调用matcher对象m的matches方法
return m.matches();
既然正则表达式是用来判断字符串是否满足要求的一种工具,那么在String类里有没有对应的方法可以直接调用呢?盲生,你发现了华点!
在java中我们可以直接调用String类的matches()方法进行判定字符串是否满足正则条件。大大节省了我们需要记忆的内容,实际使用效果如下:
注意:正则表达式中的"()"小括号与java运算时使用的表达式不一样,进行分组的时候注意分组的范围,否则会出错。
// 设置1-120的数字
System.out.println("119".matches("(120)|(1[0,1]\\d)|([1-9]\\d)|(\\d)"));
// 简化后代码如下:
System.out.println("119".matches("(120|1[0,1]|[1-9])?\\d"));