游戏人生
首页
(current)
GameDevTools
登陆
|
注册
个人中心
注销
C# 基础教程
C# 教程
C# 简介
C# 与.net
C# 开发工具
C# 程序结构
C# 基本语法
C# 数据类型
C# 类型转换
C# 变量
C# 常量
C# 运算符
C# 判断
C# 循环
C# 封装
C# 方法
C# 可空类型(Nullable)
C# 数组(Array)
C# 字符串(string)
C# 结构体(Struct)
C# 枚举(Enum)
C# 类(Class)
C# 继承
C# 多态
C# 运算符重载
C# 接口(Interface)
C# 命名空间(Namespace)
C# 预处理器指令
C# 正则表达式
C# 异常处理
C# 文件的输入与输出
C# 高级教程
C# 特性(Attribute)
C# 反射(Reflection)
C# 属性(Property)
C# 索引器(Indexer)
C# 委托(Delegate)
C# 事件(Event)
C# 集合(Collection)
C# 泛型(Generic)
C# 匿名方法
C# 不安全代码
C# 多线程
C# 实例
C# 正则表达式实例(1)-fprintf立即刷新
<< C# 预处理器指令
C# 异常处理 >>
C# 正则表达式
**正则表达式** 是一种匹配输入文本的模式。每一种编程语言都有对正则表达式提供支持。.Net 框架也提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。 > 在Mono框架下,某些正则表达式不支持,编译可能会出现错误。所以我不建议在Unity3d中去使用正则。 > 正则表达式效率并不高,所以在高频率调用的情况下,要注意优化。或者自己编写代码实现而不是图方便使用正则表达式。 ------------ #### 定义正则表达式 下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。 - 字符转义 - 字符类 - 定位点 - 分组构造 - 限定符 - 反向引用构造 - 备用构造 - 替换 - 杂项构造 ##### 字符转义 正则表达式中的反斜杠字符(\)指示其后跟的字符是特殊字符,或应按原义解释该字符。 下表列出了转义字符:   ##### 字符类 字符类与一组字符中的任何一个字符匹配。 下表列出了字符类:   ##### 定位点 定位点或原子零宽度断言会使匹配成功或失败,具体取决于字符串中的当前位置,但它们不会使引擎在字符串中前进或使用字符。 下表列出了定位点:  ##### 分组构造 分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。 下表列出了分组构造:  ```csharp using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string input = "1851 1999 1950 1905 2003"; string pattern = @"(?<=19)\d{2}\b"; foreach (Match match in Regex.Matches(input, pattern)) Console.WriteLine(match.Value); } } ``` ##### 限定符 限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项。 限定符包括下表中列出的语言元素。 下表列出了限定符:  ##### 反向引用构造 反向引用允许在同一正则表达式中随后标识以前匹配的子表达式。 下表列出了反向引用构造:  ##### 备用构造 备用构造用于修改正则表达式以启用 either/or 匹配。 下表列出了备用构造:  ##### 替换 替换是替换模式中使用的正则表达式。 下表列出了用于替换的字符:  ##### 杂项构造 下表列出了各种杂项构造:  ------------ #### Regex 类 Regex 类用于表示一个正则表达式。 下表列出了 Regex 类中一些常用的方法:  如需了解 Regex 类的完整的属性列表,请参阅微软的 C# 文档。 ------------ #### 实例 1 下面的实例匹配了以 'S' 开头的单词: ```csharp using System; using System.Text.RegularExpressions; namespace RegExApplication { class Program { private static void showMatch(string text, string expr) { Console.WriteLine("The Expression: " + expr); MatchCollection mc = Regex.Matches(text, expr); foreach (Match m in mc) { Console.WriteLine(m); } } static void Main(string[] args) { string str = "A Thousand Splendid Suns"; Console.WriteLine("Matching words that start with 'S': "); showMatch(str, @"\bS\S*"); Console.ReadKey(); } } } ``` 当上面的代码被编译和执行时,它会产生下列结果: Matching words that start with 'S': The Expression: \bS\S* Splendid Suns ------------ #### 实例 2 下面的实例匹配了以 'm' 开头以 'e' 结尾的单词: ```csharp using System; using System.Text.RegularExpressions; namespace RegExApplication { class Program { private static void showMatch(string text, string expr) { Console.WriteLine("The Expression: " + expr); MatchCollection mc = Regex.Matches(text, expr); foreach (Match m in mc) { Console.WriteLine(m); } } static void Main(string[] args) { string str = "make maze and manage to measure it"; Console.WriteLine("Matching words start with 'm' and ends with 'e':"); showMatch(str, @"\bm\S*e\b"); Console.ReadKey(); } } } ``` 当上面的代码被编译和执行时,它会产生下列结果: Matching words start with 'm' and ends with 'e': The Expression: \bm\S*e\b make maze manage measure ------------ #### 实例 3 下面的实例替换掉多余的空格: ```csharp using System; using System.Text.RegularExpressions; namespace RegExApplication { class Program { static void Main(string[] args) { string input = "Hello World "; string pattern = "\\s+"; string replacement = " "; Regex rgx = new Regex(pattern); string result = rgx.Replace(input, replacement); Console.WriteLine("Original String: {0}", input); Console.WriteLine("Replacement String: {0}", result); Console.ReadKey(); } } } ``` 当上面的代码被编译和执行时,它会产生下列结果: Original String: Hello World Replacement String: Hello World
<< C# 预处理器指令
C# 异常处理 >>
正则表达式挺少用的,我只是在判断用户注册的时候特殊字符用,其他用到的地方还没有尝试。
提交
5e3278ce498b3f06b8acfad9