`
shameant
  • 浏览: 58776 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 之regular expression-

阅读更多

如果查询 J2SE 1.4 之后的 String 在线 API 手册说明,会发现有 matches() replaceAll() 等方法,所传入的自变量是正则表达式 (Regular Expression) 的字符串。正则表达式最早是由数学家 Stephen Kleene 1956 年提出,主要使用在字符字符串的格式比对,后来在信息领域广为应用,现在已经成为 ISO( 国际标准组织 ) 的标准之一。

Java J2SE 1.4 之后开始支持正则表达式,您可以在 API 文件的 java.util.regex.Pattern 类中找到支持的正则表达式相关信息,可以将正则表达式应用于字符串的比对、取代、分离等动作上。以下将介绍几个简单的正则表达式。

对于一些简单的字符比对,例如 1 9 A Z 等,您可以使用预先定义的符号来表示。表 6-4 列出了几个常用的字符比对符号。

6-4   字符比对符号

方  法

说  明

.

符合任一字符

\d

符合 0 9 任一个数字字符

\D

符合 0 9 以外的字符

\s

符合 \t \n \x0B \f \r 等空格符

\w

符合 a z A Z 0 9 等字符,也就是数字或是字母都符合

\W

符合 a z A Z 0 9 等之外的字符,也就是除数字与字母外都符合

举例来说,如果有一字符串 abcdebcadxbc ,若使用 .bc 来作比对,符合的子字符串有 abc ebc xbc 3 个;如果使用 ..cd ,则符合的子字符串只有 abcd 。范例 6.9 证实了这个说明。

Ü 范例 6.9  RegularExpressionDemo.java                                                    

public class RegularExpressionDemo {

    public static void main(String[] args) {

        String text = "abcdebcadxbc";

 

        String[] tokens = text.split(".bc");

        for(String token : tokens) {

            System.out.print(token + " ");

        }

        System.out.println();

 

        tokens = text.split("..cd");

        for(String token : tokens) {

            System.out.print(token + " ");

        }

        System.out.println();

 

    }

}

执行结果:

 

d ad

ebcadxbc

使用 .bc 来作比对,由于符合的子字符串有 abc ebc xbc 3 个,所以 split() 方法会使用这 3 个字符串为依据来作字符串分离,返回的自然就是不符合表达式 .bc d ad 。同理如果表达式为 ..cd ,则使用 split() 返回的就是不符合 ..cd ebcadxbc

也可以使用字符类 (Character Class) 来比较一组字符范围。表 6-5 示范了几个字符类的设定方式。

6-5   字符类范例

范  例

作  用

[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]]

a z 并且是 d e f ,结果就是 d e f 可以符合

[a-z&&[^bc]]

a z 并且不是 b c

[a-z&&[^m-p]]

a z 并且不是 m p

 

指定一个字符之外,也可以加上“贪婪量词” (Greedy Quantifiers) 来指定字符可能出现的次数。表 6-6 示范了几个例子。

6-6   贪婪量词范例

范  例

作  用

X?

X 可出现一次或完全没有

X*

X 可出现零次或多次

X+

X 可出现一次或多次

X{n}

X 可出现 n

X{n,}

X 可出现至少 n

X{n, m}

X 可出现至少 n 次,但不超过 m

 

另外,还有 Reluctant quantifiers Possessive quantifiers 等的指定,可以自行参考 java.util.regex.Pattern API 文件中的说明。

String 类中, matches() 方法可以让您验证字符串是否符合指定的正则表达式,这通常用于验证使用者输入的字符串数据是否正确,例如电话号码格式; replaceAll() 方法可以将符合正则表达式的子字符串置换为指定的字符串; split() 方法可以让您依指定的正则表达式,将符合的子字符串排除,剩下的子字符串分离出来并以字符串数组返回。范例 6.9 已经示范了 split() 方法的使用,接下来在范例 6.10 中示范 replaceAll() matches() 方法的运用。

Ü 范例 6.10  UseRegularExpression.java                                                       

import java.io.*;

 

public class UseRegularExpression {

    public static void main(String args[])

                              throws IOException {

        BufferedReader reader =

            new BufferedReader(

                new InputStreamReader(System.in));

 

        System.out.println("abcdefgabcabc".replaceAll(".bc", "###"));

 

        String phoneEL = "[0-9]{4}-[0-9]{6}";

        String urlEL = "<a.+href*=*['\"]?.*?['\"]?.*?>";

        String emailEL = "^[_a-z0-9-]+(.[_a-z0-9-]+)*" +

                       "@[a-z0-9-]+([.][a-z0-9-]+)*$";

 

        System.out.print(" 输入手机号码 : ");

        String input = reader.readLine();

 

        if(input.matches(phoneEL))

            System.out.println(" 格式正确 ");

        else

            System.out.println(" 格式错误 ");

 

        System.out.print(" 输入 href 标签 : ");

        input = reader.readLine();

 

        // 验证 href 标签

        if(input.matches(urlEL))

            System.out.println(" 格式正确 ");

        else

            System.out.println(" 格式错误 ");

 

        System.out.print(" 输入电子邮件 : ");

        input = reader.readLine();

 

        // 验证电子邮件格式

        if(input.matches(emailEL))

            System.out.println(" 格式正确 ");

        else

            System.out.println(" 格式错误 ");

    }

}

 

执行结果:

 

###defg######

输入手机号码 : 0939-100391

格式正确

输入 href 标签 : <a href="http://caterpillar.onlyfun.net">

格式正确

输入电子邮件 : caterpillar.onlyfun@gmail.com

格式正确

分享到:
评论

相关推荐

    java正则表达式: regular expression(一)

    本文实例源码 博文链接:https://gmf.iteye.com/blog/89077

    Java Regular Expression Compiler-开源

    Java Regular Expression Compiler(JREC)是一个专为处理正则表达式设计的开源框架。它提供了一种机制,允许开发者根据正则表达式的常规语法构造有限状态自动机(Finite State Automata,FSA)。这种自动机在处理...

    Regular Expression(java part)

    在计算机科学领域,正则表达式是进行模式匹配的重要手段之一。通过正则表达式,用户可以定义一系列规则,用于在文本数据中查找符合特定模式的数据。 #### 二、正则表达式的基础概念 正则表达式由两种类型的字符...

    java Regular Expression / regexp / zhengzebiaodashi

    正则表达式(Regular Expression,简称regex)是Java编程语言中的一个重要工具,用于处理字符串模式匹配和搜索替换。在Java中,正则表达式通过java.util.regex包中的类和接口来实现,例如Pattern和Matcher。本篇文章...

    java 正则表达式大全 菜鸟也能玩转

    正则表达式(Regular Expression)通常被简称为regex或regexp,是一组用于描述字符串模式的语言。在Java中,`java.util.regex`包提供了支持正则表达式的类库,主要包括`Pattern`、`Matcher`和`...

    Regular expression.pdf

    介绍正则表达式的英文slide 使用Python和Java实现相应的功能 文件已加密,可在下载后与我联系,免费获得解锁密码

    Regular Expression Cookbook

    正则表达式(Regular Expression),简称为regex,是计算机科学中用于处理字符串的强大工具。它通过一种模式匹配的方式来搜索、替换或提取文本,广泛应用于文本编辑器、编程语言、搜索引擎以及各种数据处理任务中。...

    regular-expression-by-example

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在Java开发中,掌握正则表达式能极大提高处理字符串的效率和精确度。本教程以实例为...

    regular expression

    在Java中,虽然正则表达式的原生支持是在JDK的后续版本引入的,但可以通过Apache的Jakarta-ORO库来提前使用正则表达式功能。下面我们将深入探讨正则表达式的一些基本概念和常用符号。 1. **句点符号**(`.`):句点...

    regular-expression_jb51.rar

    正则表达式(Regular Expression),简称正则,是编程领域中一种强大的文本处理工具,用于高效地进行字符串的查找、替换、分割等操作。它通过一套特定的语法,可以匹配符合特定模式的字符串,广泛应用于数据验证、...

    正则表达式手册,Regular Expression

    《Regular Expression》手册是一本专注于正则表达式的轻量级指南,特别适用于JavaScript开发者以及使用Java进行字符串操作的程序员。它详细阐述了正则表达式的语法、构造以及在实际应用中的用法,帮助开发者快速理解...

    LeetCode题解 - Java语言实现-181页.pdf

    8. Regular Expression Matching in Java 正则表达式匹配是一个字符串问题,要求使用正则表达式来匹配字符串。可以使用Java的Pattern和Matcher类来解决该问题。 9. Merge Intervals 区间合并是一个数组问题,要求...

    regular-expression-in-hy:Hy python正则表达式

    我使用hylang进行正则表达式,但这并不意味着javascript / java / python中的regx不好(它们已经足够好了!),并且我不想替换它们。 这只是为了显示lisp函数编程的便利性。 好了,现在我实现了一个使用hy(python...

    java版本的expression正则表达式.rar

    在Java编程语言中,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于模式匹配、查找、替换和提取字符串等操作。在Java中,正则表达式是通过`java.util.regex`包提供的类来实现的,主要...

    正则表达式(regular expression)手册

    正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,广泛应用于数据验证、搜索与替换、文本分析等多个领域。在IT行业中,熟练掌握正则表达式能够极大地提升处理字符串问题的效率。...

    Java源代码案例 - 使用正则表达式解析sql语法树.zip

    在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于字符串匹配、查找、替换等操作。在Java编程中,正则表达式是通过`java.util.regex`包来实现的,它提供了丰富的API供开发者进行...

Global site tag (gtag.js) - Google Analytics