黑马程序员技术交流社区

标题: 正则表达式 [打印本页]

作者: ztwztw    时间: 2014-1-5 10:13
标题: 正则表达式
用正则表达式获取相应规则的数据,怎么调用正则表达式
作者: 曹春洋    时间: 2014-1-5 10:49
本帖最后由 曹春洋 于 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("邮箱地址不正确!");
                }
        }







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2