`
free_zhou
  • 浏览: 52111 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

正则表达式语法 应用

阅读更多
  接触正则表达式也有一段时间了,也深体会REGEXP的优点,始终没有仔细的学习过,最近写个。net的程序,需要用到正则,现整理一下,以防忘记。

正则表达式基本语法
一.
1. \d 0-9数字
2. \D 非数字,0-9 补集
3. \w 单词字符 0-9 & 大小写字母 & 下划线
4. \W \w的补集
5. \s 空白字符 如:换行\n & 回车\r & 制表符\t & 垂直制表符\v & 换页符\f
6. \S \s的补集
7. \. 除换行符\n以外的所有字符
8. [...] 匹配[]内所有字符
9. [^...] 匹配[]内所列出的所有字符
 string test = @"Success belongs to those who are prepared!";
            Regex r1 = new Regex("to");
            //Console.Write(r1.IsMatch(test)); = true
            Regex r2 = new Regex("[0-9a-z]"); //匹配0-9 z-a
            //Console.Write(r2.IsMatch(test)); = true


Regex r3 = new Regex("^belongs to those$");
            Regex r4 = new Regex("^Success belongs to those who are prepared!$");
            Regex r5 = new Regex("^Success belongs to those");
            Console.Write(r3.IsMatch(test)); //false
            Console.Write(r4.IsMatch(test)); //true
            Console.Write(r5.IsMatch(test)); //true
            Console.Write(r5.Matches(test).Count);


//多行时
            String test1 = @"Success belongs to
those who are prepared!";
            Regex r6 = new Regex(@"^Success belongs to\r\nthose who are prepared!$",RegexOptions.Multiline);

            Console.Write(r6.IsMatch(test1)); //true
            Console.Write(r6.Matches(test1).Count);  //1

//多行时设置了RegexOptions.Multiline属性,^$多次匹配,每行一次
            Regex r7 = new Regex("^", RegexOptions.Multiline);
            Console.Write(r7.Matches(test1).Count);  //2


 // \b约束一个完整的词,\bxxx\c 或 \bxxx 或 xxx\b 一样
            Regex r8 = new Regex(@"belongs\b", RegexOptions.Multiline);
            Console.Write(r8.Matches(test1).Count); //1

            string date = "1986-02-14";
            //([1-9]\d{3}-\d{2}-\d{2})|(\d{4}/\d{2}/\d{2})
            Regex r9 = new Regex(@"^[1-9]\d{3}-\d{2}-\d{2}$");
            Console.Write(r9.IsMatch(date)); //true

二.定位符。定位符代表一个虚的字符,是一个位置也可以直观的认为定位符是字符与字符间的微小的间隙。
1. ^ 其后的字符位于字符串的开始
2. $ 其前的字符位于字符串的结束
3. \b 匹配一个单词的边界
4. \B 匹配非单词的边界

5. \A 前面的字符必须位于字符串的开始处
6. \z 前面的字符必须位于字符串的结束处
7. \Z 前面的字符必须位于字符串的结束处或者换行符前
8. \b 通常约束一个完整的单词
三.重复描述字符
1.{n} 匹配前面的字符n次
2.{n,} 匹配前面的字符n次或多于n次
3.{n,m} 匹配前面的字符n - m 次
4.? 匹配前面的字符0 - 1次
5.+ 匹配前面的字符1或多于1次
6.= 匹配前面的字符0次或少于0次
四.择一匹配
1.(|) 如:(ad|cd)
2.如[a-z]
五.特殊字符匹配
1.\\ 匹配\
2.\" 匹配“
六. 贪婪与非贪婪  ****
    1.(a)(\w+) :匹配a及后面字符
     2.(a)(\w+)(a) : 为了精确匹配\w+会让出最后一位匹配a
      同理,带 "*" 和 "{m,n}" 的表达式都是尽可能地多匹配,带 "?" 的表达式在   匹配可不匹配的时候,也是尽可能的 "要匹配"。这 种匹配原则就叫作 "贪婪" 模式。在修饰匹配次数的特殊符号后再加上一个 "?" 号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的 "不匹配"。这种匹配原则叫作 "非贪婪" 模式,也叫作 "勉强" 模式。如果少匹配就会导致整个表达式匹配失败的时候,与贪婪模式类似,非贪婪模式会最小限度的再匹配一些,以使整个表达式匹配成功。如:abbbabbba
   3.(a)(\w+?) 只匹配了a 后一个b
   4.(a)(\w+?)(a) 为了匹配成功,\w+?匹配了bbb
   别人写的一个例子很形象:如下

       举例:表达式 "<td>(.*)</td>" 与字符串 "<td><p>aa</p></td> <td><p>bb</p></td>" 匹配时,匹配的结果是:成功;匹配到的内容是 "<td><p>aa</p></td> <td><p>bb</p></td>" 整个字符串, 表达式中的 "</td>" 将与字符串中最后一个 "</td>" 匹配。而相比之下:表达式 "<td>(.*?)</td>" 匹配举例1中同样的字符串时,将只得到 "<td><p>aa</p></td>", 再次匹配下一个时,可以得到第二个 "<td><p>bb</p></td>"。

七. 回溯与非回溯
八. 正向搜索与反向搜索
九. 16进制范围
十. 精确匹配   *****

找时间把没相对应的代码补上,以便学习!现在用C#,就上C#代码吧,java的regex也差不多。
分享到:
评论

相关推荐

    C#正则表达式语法大全

    C#正则表达式语法大全涵盖了在C#编程语言中使用正则表达式进行文本匹配、提取、替换等操作所必需的语法知识。正则表达式是一种强大的文本处理工具,它可以描述字符串的模式,让我们能够执行复杂的搜索和匹配操作。 ...

    PB实现的正则表达式

    需要注意的是,由于PowerBuilder 11.5年代较久,其支持的正则表达式功能可能相对较弱,对于现代的复杂正则表达式语法可能不完全兼容。在使用时,开发者可能需要查阅相关的文档,或者考虑升级到支持更强大正则表达式...

    正则表达式语法大全_手册.doc

    正则表达式语法大全 正则表达式是一种强大的模式匹配语言,广泛应用于字符串处理、文本匹配和搜索等领域。下面是正则表达式语法大全的知识点总结: 1. 特殊字符:在正则表达式中,某些字符具有特殊意义,例如: *...

    正则表达式测试工具C#版(src)

    2. **正则表达式语法** - 基本元字符:如`.`(匹配任意字符,除换行符)、`^`(匹配行首)、`$`(匹配行尾)、`\d`(匹配数字)、`\w`(匹配字母数字下划线)等。 - 量词:`*`(零个或多个)、`+`(一个或多个)、...

    正则表达式语法(常用的正则表达式)

    正则表达式语法 正则表达式是一个强大的字符串处理工具,广泛应用于窗体验证、文本处理等领域。下面是正则表达式语法的详细介绍: 1. 元字符 元字符是正则表达式的特殊字符,它们具有特殊的含义。常见的元字符...

    正则表达式语法.pdf

    ### 正则表达式语法详解 #### 一、引言 正则表达式是一种强大的文本模式匹配工具,广泛应用于各种编程语言中,用于文本搜索、替换等操作。它结合了普通字符和特殊字符(元字符),能够精确地描述在文本中需要匹配...

    pb 使用正则表达式源码pbregexp

    描述中提到的“pb中使用正则表达式组件,通过该组件可以在pb脚本中使用功能强大的正则表达式”,强调了pbregexp组件的强大功能,意味着它可能支持丰富的正则表达式语法,如量词(*、+、?)、字符类、预定义字符集、...

    正则表达式转换工具

    4. **正则表达式在编程中的应用** - 数据验证:在表单提交时,可以使用正则表达式验证输入格式,如邮箱、电话号码等。 - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:...

    C#正则表达式语法

    正则表达式在C#中被广泛应用于数据验证、文本提取、日志分析等多个场景。 在C#中,正则表达式的基本语法遵循.NET Framework的标准,它包含了一系列的元字符,这些元字符具有特殊的含义,能够帮助构建各种复杂的模式...

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

    3. **正则表达式语法** - **量词**:如`*`, `+`, `?`, `{n}`, `{n,}` 和 `{n,m}` 控制匹配次数。 - **字符类**:如`[abc]`匹配a、b或c,`[^abc]`匹配除a、b、c外的任何字符。 - **边界匹配器**:`\b`匹配单词边界...

    正则表达式必知必会v_1.0.pdf

    正则表达式是一种强大的文本处理工具,广泛应用于各个领域。下面是对正则表达式的详细解释: 正则表达式的用途 正则表达式主要用于处理文本,提供了两大主要功能:查找和替换。查找功能允许用户根据不同的规则来...

    正则表达式在数据库查询中的应用

    - **兼容性问题**:不同的数据库系统支持的正则表达式语法可能存在差异,需要根据所使用的数据库类型调整正则表达式的写法。 - **安全性问题**:在用户输入的数据中使用正则表达式时,应注意防止SQL注入攻击,确保...

    正则表达式语法大全

    正则表达式语法大全 正则表达式是一种强大的字符串匹配工具,它可以帮助开发者快速地从大量文本数据中提取有用的信息。下面是正则表达式语法大全,涵盖了基本元字符、量词、分组、断言、锚点、字符类、转义字符等...

    JAVA正则表达式语法.txt

    根据给定文件的信息,我们可以详细地探讨JAVA正则表达式的语法和使用方法,这将包括基本的字符类、预定义类、POSIX类、特殊字符、Unicode支持以及匹配模式的行为等。 ### 1. 字符转义 在JAVA中,正则表达式中的...

    Lucene 使用正则表达式

    2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### Lucene简介 Lucene是一个高性能、全功能的全文搜索引擎库。它为...

    java正则表达式匹配工具

    总之,Java正则表达式匹配工具结合了强大的正则表达式语法,提供了一种便捷的方式来处理文本数据。无论是在开发过程中还是日常使用中,熟练掌握正则表达式都能极大地提升工作效率。通过不断实践和学习,你可以更好地...

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

    3. **语法提示**:提供正则表达式语法的详细提示和参考,帮助用户理解和学习正则表达式中的各种符号和结构,如点号(.)、星号(*)、加号(+)、问号(?)、括号(())、管道符(|)等。 4. **测试集**:允许用户...

Global site tag (gtag.js) - Google Analytics