`
XiangdongLee
  • 浏览: 91997 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

正则表达式1:概念

 
阅读更多
1. 概念

        在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

        正则表达式是一种可以用于模式匹配和替换的规范。

        一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。

        正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。


        自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台。


2. 一些正则表达式

        (1)

        \\        反斜杠
        \t        间隔 ('\u0009')
        \n        换行 ('\u000A')
        \r        回车 ('\u000D')
        \d        数字 等价于[0-9]
        \D        非数字 等价于[^0-9]
        \s        空白符号 [\t\n\x0B\f\r]
        \S        非空白符号 [^\t\n\x0B\f\r]
        \w        单独字符 [a-zA-Z_0-9]
        \W        非单独字符 [^a-zA-Z_0-9]
        \f        换页符
        \e        Escape
        \b        一个单词的边界
        \B        一个非单词的边界
        \G        前一个匹配的结束


        (2)

        ^         限制开头(^java:条件限制为以Java为开头字符)
        $         限制结尾(java$:条件限制为以java为结尾字符)
        .         条件限制除\n以外任意一个单独字符(java..:条件限制为java后除换行外任意两个字符)


        (3)加入特定限制条件

        (3.1)加入特定限制条件「[]」:

        [a-z]        条件限制在小写a to z范围中一个字符
        [A-Z]        条件限制在大写A to Z范围中一个字符
        [a-zA-Z]     条件限制在小写a to z或大写A to Z范围中一个字符
        [0-9]        条件限制在小写0 to 9范围中一个字符
        [0-9a-z]     条件限制在小写0 to 9或a to z范围中一个字符
        [0-9[a-z]]   条件限制在小写0 to 9或a to z范围中一个字符(交集)


        (3.2)[]中加入^后加再次限制条件「[^]」

        [^a-z]       条件限制在非小写a to z范围中一个字符
        [^A-Z]       条件限制在非大写A to Z范围中一个字符
        [^a-zA-Z]    条件限制在非小写a to z或大写A to Z范围中一个字符
        [^0-9]       条件限制在非小写0 to 9范围中一个字符
        [^0-9a-z]    条件限制在非小写0 to 9或a to z范围中一个字符
        [^0-9[a-z]]  条件限制在非小写0 to 9或a to z范围中一个字符(交集)


        (3.3)在限制条件为特定字符出现0次以上时,可以使用「*」

        J*           0个以上J
        .*           0个以上任意字符
        J.*D         J与D之间0个以上任意字符


        (3.4)在限制条件为特定字符出现1次以上时,可以使用「+」

        J+           1个以上J
        .+           1个以上任意字符
        J.+D         J与D之间1个以上任意字符


        (3.5)在限制条件为特定字符出现有0或1次以上时,可以使用「?」

        JA?          J或者JA出现


        (3.6)限制为连续出现指定次数字符「{a}」

        J{2}         JJ
        J{3}         JJJ
        文字a个以上,并且「{a,}」
        J{3,}        JJJ,JJJJ,JJJJJ,???(3次以上J并存)
        文字a个以上,b个以下「{a,b}」
        J{3,5}       JJJ或JJJJ或JJJJJ
        两者取一「|」
        J|A          J或A
        Java|Hello   Java或Hello


        (3.7)「()」中规定一个组合类型

        比如,查询<a href=\"index.html\">index</a>中<a href></a>间的数据,可写作<a.*href=\".*\">(.+?)</a>


        (4)用Pattern.compile函数时

        在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数: Pattern Pattern.compile(String regex, int flag)

        flag的取值范围如下:

        (4.1)Pattern.CANON_EQ

        当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。

        比如用了这个标志之后,表达式"a\u030A"会匹配"?"。默认情况下,不考虑"规范相等性(canonical equivalence)"。


        (4.2)Pattern.CASE_INSENSITIVE(?i) 

        默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。

        这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。


        (4.3)Pattern.COMMENTS(?x) 

        在这种模式下,匹配时会忽略(正则表达式里的)空格字符。

        (译者注:不是指表达式里的"\\s",而是指表达式里的空格,tab,回车之类)。

        注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。


        (4.4)Pattern.DOTALL(?s) 

        在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。

        默认情况下,表达式'.'不匹配行的结束符。


        (4.5)Pattern.MULTILINE(?m) 

        在这种模式下,'^'和'$'分别匹配一行的开始和结束。

        此外,'^'仍然匹配字符串的开始,'$'也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。


        (4.6)Pattern.UNICODE_CASE(?u)   

        在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。

        默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。


        (4.7)Pattern.UNIX_LINES(?d) 

        在这个模式下,只有'\n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。


        请多的内容,请查看java.util.regex包中的Pattern类。

分享到:
评论
1 楼 mute_ 2015-08-23  
特别腻害呢

相关推荐

    常用正则表达式大全.txt

    - 正则表达式:`^(0|[1-9][0-9]*)$` - 示例:`0`, `123` 4. **小数验证**:只允许输入带有最多两位小数的数字。 - 正则表达式:`^[0-9]+(\.[0-9]{2})?$` - 示例:`123.45` 5. **非零开头数字**:只允许输入不...

    正则表达式转换工具

    1. **正则表达式基本概念** - 元字符:如`.`, `*`, `+`, `?`, `{}`, `[]`, `\`, `^`, `$`等,它们具有特殊含义,在正则表达式中用来定义模式。 - 字符类:例如`[abc]`,匹配其中任意一个字符。 - 量词:`*`, `+`,...

    vb正则表达式实例(正则表达式测试程序)

    下面将详细探讨正则表达式的基本概念、在VB.NET中的应用以及如何使用它们进行文本匹配。 1. 正则表达式基础 - **模式匹配**:正则表达式是一种特殊的字符序列,用于定义字符串的搜索模式。 - **元字符**:如 `.`...

    日期正则表达式(很实用)

    ### 日期正则表达式详解 #### 一、基本概念 正则表达式是一种用于文本模式匹配的强大工具,在处理字符串时极为有用。日期格式验证是正则表达式常见应用场景之一,尤其是在表单验证、数据清洗等领域。本文将详细...

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    1. **正则表达式基本概念** - **模式匹配**:正则表达式的核心在于模式,它是由特殊字符和普通字符组成的字符串,用于描述一系列可能的输入。 - **元字符**:如`^`(行首)、`$`(行尾)、`.`(任意字符)、`*`...

    三目运算符+正则表达式

    在编程世界中,三目运算符和正则表达式是两个非常重要的概念,它们各自扮演着独特的角色,同时也常被结合起来使用,以提高代码的简洁性和效率。让我们深入探讨这两个主题。 首先,三目运算符,也称为条件运算符,是...

    C#字符串和正则表达式参考手册

    特别是在处理文本操作时,字符串和正则表达式是两个至关重要的概念。本文将深入探讨C#中的字符串操作和正则表达式使用,帮助你更好地理解和运用这些工具。 一、C#字符串 1. 字符串基础:在C#中,字符串是不可变...

    精通正则表达式(第三版)简体中文版

    本书《精通正则表达式(第三版)简体中文版》主要介绍了正则表达式的概念、语法以及如何在不同的环境中高效地使用正则表达式。 #### 二、正则表达式的语法基础 1. **元字符**:正则表达式中的特殊字符,用于指定...

    易语言正则表达式学习工具源码

    正则表达式的基础概念: 1. 元字符:如"."、"^"、"$"、"*"、"+"、"?"、"{"、"}"、"["、"]"、"\"等,它们在正则表达式中有特殊含义,用来定义匹配规则。 2. 字符类:用方括号 "[" 和 "]" 包围的一组字符,表示匹配...

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

    正则表达式生成工具,正则表达式生成工具

    正则表达式的常见概念和元素包括: - **字符类**:如[\d\D],匹配任意数字或非数字。 - **量词**:如*、+、?,控制匹配的数量,分别表示零个或多个、一个或多个、零个或一个。 - **分组**:使用括号(())将一部分...

    正则表达式不包涵特殊字符(除了 指定字符 以外)

    在探讨如何利用正则表达式来判断一个字符串除指定字符外不包含其他特殊字符之前,我们首先需要了解正则表达式的基本概念以及本场景中的具体需求。 ### 正则表达式简介 正则表达式是一种强大的文本处理工具,能够...

    使用Java正则表达式分析处理日志

    首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式匹配语言,用于在字符串中查找符合特定规则的模式。Java中的正则表达式主要通过`java.util.regex`包中的类来实现,如`Pattern`...

    强大的正则表达式生成工具 C#版

    正则表达式的基本概念包括: 1. **字符集**:如`.`代表任意字符,`\d`代表数字,`\w`代表字母或数字,`\s`代表空白字符等。 2. **量词**:`*`表示零个或多个前一个字符,`+`表示一个或多个,`?`表示零个或一个,`{...

    正则表达式翻译工具,RegexTest.exe

    使用RegexTest.exe时,用户应了解正则表达式的这些基本概念,并结合工具的特性,逐步构建和优化自己的正则表达式。对于初学者,学习正则表达式可能有些挑战,但通过实践和使用像RegexTest.exe这样的辅助工具,可以...

    javascript正则表达式迷你书 (1).pdf

    本书是 JavaScript 正则表达式的入门级教程,旨在帮助读者快速掌握正则表达式的基本概念和应用。下面是本书的知识点摘要: 第一章:正则表达式字符匹配攻略 * 两种模糊匹配:横向模糊匹配和纵向模糊匹配 * 字符组...

    正则表达式(日期校验)

    在深入了解具体实现之前,我们先简要回顾一下正则表达式的相关概念以及JavaScript中的日期对象。 ##### 1. 正则表达式基础 - **语法结构**:正则表达式是由一系列字符和特殊符号组成的模式串,用于匹配字符串中的...

    csharp正则表达式参考手册

    正则表达式,又称规则表达式。(英语:Regular ...正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen。

    [精通正则表达式(第三版)].(美)佛瑞德.扫描版(modify).pdf

    1. 正则表达式基础:介绍正则表达式的基本概念、构成元素,以及如何编写简单正则表达式进行基本的文本匹配。 2. 元字符和模式:深入讲解各种元字符的用法和它们在构建复杂模式时的组合方式,包括字符类、量词、边界...

Global site tag (gtag.js) - Google Analytics