本帖最后由 曹春洋 于 2014-1-5 10:52 编辑
正则表达式善于处理文本,对匹配、搜索和替换等操作都有意想不到的作用。正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率
Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基本类库,使用时不需要再导入第三方的类库了。Java 正则表达式的语法来源于象征着正则表达式标准的 Perl 语言,但也不是完全相同的,具体的可以参看 Pattern 类的 API 文档说明。
[abc]
| a, b 或 c(简单类) | [^abc]
| 除 a, b 或 c 之外的任意字符(取反) | [a-zA-Z]
| a 到 z,或 A 到 Z,包括(范围) | [a-d[m-p]]
| a 到 d,或 m 到 p:[a-dm-p](并集) | [a-z&&[def]]
| d,e 或 f(交集) | [a-z&&[^bc]]
| 除 b 和 c 之外的 a 到 z 字符:[ad-z](差集) | [a-z&&[^m-p]]
| a 到 z,并且不包括 m 到 p:[a-lq-z](差集)
|
Pattern 的 API 包有许多有用的预定义字符类(predefined character classes),提供了常用正则表达式的简写形式。
预定义字符类
. 任何字符(匹配或者不匹配行结束符)
\d 数字字符:[0-9]
\D 非数字字符:[^0-9]
\s 空白字符:[\t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
上表中,左列是构造右列字符类的简写形式。例如:\d指的是数字范围(0~9),\w指的是单词字符(任何大小写字母、下划线或者是数字)。无论何时都有可能使用预定义字符类,它可以使代码更易阅读,更易从难看的字符类中排除错误。
以反斜线(\)开始的构造称为转义构造(escaped constructs)。回顾一下在 字符串 一节中的转义构造,在那里我们提及了使用反斜线,以及用于引用的\Q和\E。在字符串中使用转义构造,必须在一个反斜线前再增加一个反斜用于字符串的编译,例如:
001
private final String REGEX = "\\d"; // 单个数字
下面是一个匹配邮箱格式的一个小例子,你可以看看,可以进一步的加深你对正则表达式的理解
public class Test {
private static Scanner scanner;
public static void main(String[] args)
{
scanner=new Scanner(System.in);
checkMail(scanner.next());
}
//邮箱验证
/*
* 要求
* 1.长度为3到18位
* 2.包含大小写字母 和数字以及下划线
* 3.
*/
public static void checkMail(String mail)
{
//定义一个正则表达式
//开始是小写字母a到z或者大写字母A到Z或者包含下划线的长度为3到18位,@之后也是小写字母a到z或者大写字母A到Z长度一位或多位,
//.之后是大写或小写字母a到Z出现的次数为一次或多次
String regx="[a-zA-Z—_0-9]{3,18}@[a-zA-Z0-9]+(\\.+[a-zA-Z]+)";
if(mail.matches(regx))
{
System.out.println(mail);
}
else
{
System.out.println("邮箱地址不正确!");
}
}
|