ASP.NET正则表达式的命名组和四向处理功能

开发 后端
本文介绍ASP.NET正则表达式的两个高级功能:命名组和四向处理。

ASP.NET正则表达式高级功能

正则表达式有两个不得不说的功能,一个是“命名组”,另一个是“四向处理”(lookaround processing)。由于这些功能很少使用,此处只简单阐述一下。

ASP.NET正则表达式的命名组

使用命名组,您可单独命名匹配组,然后在表达式中使用程序语言引用这些组。如果结合 Replace 方法重新设置输入字符串的格式(通过重新排列顺序、替换输入字符串中的元素),这个功能特别有效。例如,假设日期使用 MM/DD/YYYY 格式的字符串,而您希望日期格式是 DD-MM-YYYY。此时,可编写一个表达式捕获***种格式,遍历它的匹配集合,并分析每个字符串,然后使用字符串操作建立替换字符串。这需要大量的代码和大量的处理。如果使用命名组,您可完成同样的任务,具体见下:

  1. String MDYToDMY(String input)  
  2. {  
  3.    return Regex.Replace(intput, @"\b(?<month>\d{1,2})/(?<day>\d{1,2}/(?<year>\d{4})\b", "${day}-  
  4. ${month}-${year}");  
  5. }  

您还可以按编号或按名称引用组。在任何情况下,这种引用通称作“反向引用”。另一个经常使用反向引用的场合在匹配表达式本身,如下这个表达式用于查找重复的字母:[a-z]\1。它将匹配“aa”、“bb”、“cc”,但它不同于 [a-z]{2}[a-z][a-z],后两者是等效的,后两者允许匹配“ab”或“ac”或任何其他两个字母的组合。反向引用允许表达式记住表达式已经分析并匹配过的输入字符串中的部分字符。

ASP.NET正则表达式的“四向处理”

“四向处理”指很多正则表达式引擎所支持的正负 Lookahead 和 Lookbehind 功能。并不是所有的正则表达式引擎都支持验证四向处理。这些构造不使用字符,即使它们可以匹配字符。有些模式可能在不使用四向处理的情况下无法描述。特别是当模式中存在的一部分依赖于另一部分,如果不使用四向处理,则不能描述这样的模式。下面介绍了每个四向处理的语法。

语法

说明

(?=...)

正 Lookahead

(?!...)

负 Lookahead

(?<=...)

正 Lookbehind

(?<!...)

负 Lookbehind

密码验证是必需四向处理的一个示例。假定在密码限制中,密码必须介于 4 到 8 个字符,且必须至少包含一个数字。为此,您可以仅在匹配中测试 \d,然后使用字符串操作来测试长度。但要在正则表达式中实现这一切,必须使用 Lookahead。特别是正 lookahead,如下所示:^(?=.*\d).{4,8}$

【编辑推荐】

  1. .NET正则表达式基础学习资料
  2. 什么是正则表达式:其历史与.NET框架的关系
  3. 详解C#正则表达式
  4. 利用正则表达式使C#判断输入日期格式是否正确
  5. .NET下正则表达式应用四例
责任编辑:yangsai 来源: MSDN
相关推荐

2009-09-16 18:19:34

正则表达式组

2009-07-21 17:46:47

ASP.NET表达式

2009-03-24 08:56:15

正则表达式格式清理字符串

2009-08-07 14:24:31

.NET正则表达式

2018-09-27 15:25:08

正则表达式前端

2012-01-12 10:21:57

正则表达式

2012-04-28 15:22:46

PHP

2009-08-24 17:14:41

正则表达式C#和.NET框架

2009-08-07 14:31:40

.NET正则表达式基础

2010-03-03 12:58:41

Linux正则表达式

2010-01-05 17:46:04

.NET Framew

2020-09-04 09:16:04

Python正则表达式虚拟机

2009-06-09 09:00:09

java正则表达式

2009-03-12 10:15:15

正则表达式JDK7Java

2024-09-14 09:18:14

Python正则表达式

2016-11-10 16:21:22

Java 正则表达式

2022-01-04 11:35:03

Linux Shel正则表达式Linux

2009-09-16 17:15:57

正则表达式引擎

2023-09-13 08:12:45

2009-08-19 14:48:57

正则表达式性能
点赞
收藏

51CTO技术栈公众号