正则表达式
来源:互联网 发布:手机丢了淘宝怎么冻结 编辑:程序博客网 时间:2024/05/29 04:28
正则表达式简介
.NET 平台提供了一个专门的命名空间用于实现正则表达式的功能,它就是System.Text.RegularExpressions。正则表达式(RegEx)最早出现在UNIX系统中,后来被广泛用于批量程序和脚本语言,如Perl。它的功能非常强大,特别是在字符串匹配和处理方面,例如字符串的替换等等。通常,我们通过查找函数在输入字符串中匹配并定为符合模式的字串。虽然如此,利用正则表达式却可以处理到复杂的匹配模式。
正则表达式的匹配模式是通过字符常量和专用字符的组合来定义的。其专用字符可用于表示字符串行首,或任何非空白字符,等等其它功能。在程序P 页有一个方法,它就是通过正则表达定义了一个要查询的字符串匹配模式:
String strPwdMatch = @"^/S*$";
在这个表达式中,首先“@”它是C#语言的专用表达式。如果把它置于字符串常量的前面(双引号包含的部分),编译器就不会把反斜杠(“/”)作为转义符来处理了。否则上面的正则表达式就必须写成这样"^//S*$"。虽然“@”不是必须要用的,但如果要匹配的字符串模式的确很复杂,利用这一特性的确可以帮助我们简化表达式并更好地理解待匹配模式的含义。
上面用到的正则表达式包含了四个专用的字符: ^、/S、*以及$。^表示从第一个字符开始搜索;$表示搜索一直到最后一个字符结束;/S表示要匹配任何非空白字符串;*表示它前面的字符组合可以重复0次或者任意多次。
归纳起来,这个正则表达式要匹配的字符串模式为:
(1) 从字符串的开始处检查
(2) 查找连续非空字符
(3) 把检查进行到字符串的末尾
在System.Text.RegularExpresssions命名空间中有许多类。其中最常用的是Regex类,它包含了用于匹配字符串模式的方法。作为一个静态类,调用它的方法无需考虑类型声明和事后的资源释放。另一个类就是Match。它会找出字符串中第一个符号匹配条件的子串。如果,字符串中包含多个满足条件的子串,那么它也会在找到第一个时返回。如果要返回字符串中所有满足条件的子串,可以使用MatchCollection对象。
例子:/S+匹配不包含空白符的字符串。
<a[^>]+>匹配用尖括号括起来的以a开头的字符串。
一款很酷很棒的正则表达式速成器在我的资源可供下载 :)
一道例题~
将 123<abc>456<frg>78<df> 方括号里的字符过滤
得 12345678
// Regex search and replace
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"<[^>]+>", options);
string input = textIn.Text;
string replacement = @"";
string result = regex.Replace(input, replacement);
textOut.Text = result;
// TODO: Do something with result
//System.Windows.Forms.MessageBox.Show(result, "Replace");
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"<[^>]+>", options);
string input = textIn.Text;
string replacement = @"";
string result = regex.Replace(input, replacement);
textOut.Text = result;
// TODO: Do something with result
//System.Windows.Forms.MessageBox.Show(result, "Replace");
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 软件开发组织的web2.0模式
- 该过去的总会过去
- [转]编写自己的MSN机器人
- 对DBD::mysql问题的探究
- 用不起Windows专辑(三) ---- 装饰一下吧
- 正则表达式
- Delphi中模块句柄管理,及FindClassHInstance详解
- Delphi中的压缩单元ZLib.pas中二个鲜为人知的二个“指针”全局函数CompressBuf()和DeCompressBuf()
- MS-SQL 2000中未公开的Type_name(id)内部函数和Sp_ForEachTable存储过程
- 数据库设计的八条原则
- 我出的几道OO面试题
- Delphi中须注意的二个对象(TStreamAdapter、TObjectList)的释放问题
- Autoconf 学习笔记(2)
- cxGrid作树形控件使用