接触正则表达式也有一段时间了,也深体会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#编程语言中使用正则表达式进行文本匹配、提取、替换等操作所必需的语法知识。正则表达式是一种强大的文本处理工具,它可以描述字符串的模式,让我们能够执行复杂的搜索和匹配操作。 ...
需要注意的是,由于PowerBuilder 11.5年代较久,其支持的正则表达式功能可能相对较弱,对于现代的复杂正则表达式语法可能不完全兼容。在使用时,开发者可能需要查阅相关的文档,或者考虑升级到支持更强大正则表达式...
正则表达式语法大全 正则表达式是一种强大的模式匹配语言,广泛应用于字符串处理、文本匹配和搜索等领域。下面是正则表达式语法大全的知识点总结: 1. 特殊字符:在正则表达式中,某些字符具有特殊意义,例如: *...
2. **正则表达式语法** - 基本元字符:如`.`(匹配任意字符,除换行符)、`^`(匹配行首)、`$`(匹配行尾)、`\d`(匹配数字)、`\w`(匹配字母数字下划线)等。 - 量词:`*`(零个或多个)、`+`(一个或多个)、...
正则表达式语法 正则表达式是一个强大的字符串处理工具,广泛应用于窗体验证、文本处理等领域。下面是正则表达式语法的详细介绍: 1. 元字符 元字符是正则表达式的特殊字符,它们具有特殊的含义。常见的元字符...
### 正则表达式语法详解 #### 一、引言 正则表达式是一种强大的文本模式匹配工具,广泛应用于各种编程语言中,用于文本搜索、替换等操作。它结合了普通字符和特殊字符(元字符),能够精确地描述在文本中需要匹配...
描述中提到的“pb中使用正则表达式组件,通过该组件可以在pb脚本中使用功能强大的正则表达式”,强调了pbregexp组件的强大功能,意味着它可能支持丰富的正则表达式语法,如量词(*、+、?)、字符类、预定义字符集、...
4. **正则表达式在编程中的应用** - 数据验证:在表单提交时,可以使用正则表达式验证输入格式,如邮箱、电话号码等。 - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:...
正则表达式在C#中被广泛应用于数据验证、文本提取、日志分析等多个场景。 在C#中,正则表达式的基本语法遵循.NET Framework的标准,它包含了一系列的元字符,这些元字符具有特殊的含义,能够帮助构建各种复杂的模式...
3. **正则表达式语法** - **量词**:如`*`, `+`, `?`, `{n}`, `{n,}` 和 `{n,m}` 控制匹配次数。 - **字符类**:如`[abc]`匹配a、b或c,`[^abc]`匹配除a、b、c外的任何字符。 - **边界匹配器**:`\b`匹配单词边界...
正则表达式是一种强大的文本处理工具,广泛应用于各个领域。下面是对正则表达式的详细解释: 正则表达式的用途 正则表达式主要用于处理文本,提供了两大主要功能:查找和替换。查找功能允许用户根据不同的规则来...
- **兼容性问题**:不同的数据库系统支持的正则表达式语法可能存在差异,需要根据所使用的数据库类型调整正则表达式的写法。 - **安全性问题**:在用户输入的数据中使用正则表达式时,应注意防止SQL注入攻击,确保...
正则表达式语法大全 正则表达式是一种强大的字符串匹配工具,它可以帮助开发者快速地从大量文本数据中提取有用的信息。下面是正则表达式语法大全,涵盖了基本元字符、量词、分组、断言、锚点、字符类、转义字符等...
根据给定文件的信息,我们可以详细地探讨JAVA正则表达式的语法和使用方法,这将包括基本的字符类、预定义类、POSIX类、特殊字符、Unicode支持以及匹配模式的行为等。 ### 1. 字符转义 在JAVA中,正则表达式中的...
2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### Lucene简介 Lucene是一个高性能、全功能的全文搜索引擎库。它为...
总之,Java正则表达式匹配工具结合了强大的正则表达式语法,提供了一种便捷的方式来处理文本数据。无论是在开发过程中还是日常使用中,熟练掌握正则表达式都能极大地提升工作效率。通过不断实践和学习,你可以更好地...
3. **语法提示**:提供正则表达式语法的详细提示和参考,帮助用户理解和学习正则表达式中的各种符号和结构,如点号(.)、星号(*)、加号(+)、问号(?)、括号(())、管道符(|)等。 4. **测试集**:允许用户...