C#程序设计.唐大仕.09.文本处理及正则表达式

文本处理及正则表达式

1. 基于文本的应用

控制台应用程序

  • Main() 函数的参数——命令行参数
    • 可以带 string[] 参数
    • 可以有返回值 (int),也可以为 void

Environment 类

1
2
3
4
5
6
7
8
9
10
CommandLine
CommandLineArgs
MachineName
OSVersion
UserDomainName
UserName
GetEnvironmentVariables
CurrentDirectory
SystemDirectory
GetFolderPath(Environment.SpecialFolder.System)

2. 文本处理常用的几个类

  • Console 类
1
2
3
Write
WriteLine
ReadLine
  • String 类
  • StringBuilder 类
  • System.Text.Encoding 类
1
2
3
4
5
.Default
.UTF8
.GetEncoding
.GetBytes(str)
.GetString(byte[])

3. 正则表达式

  • Regular Expression
  • 用来表示匹配某类文本

要素

字符

  • ab\t\[\u0020\x20
  • [a-zA-z]\w
  • [0-9]\d
  • [^0-9]\D
  • \s 即空白
  • \S 即非空白
  • . 表任意

次数

  • {2,6}
  • *{0,}
  • +{1,}
  • ?{0,1}
  • *?+??? 表示 lazy 匹配
    • 匹配上一个就结束
    • 正常为 greedy 匹配,尽可能匹配上更多的字符

功能符

  • | 表示或者
  • () 表示成组
  • (?<名称>xxxxxxxx) 表示对分组进行命名
    • 在替换时, 使用 ${名称}
    • 若不命名,则为 $1$2 等等,$0 表示整个匹配
  • (?i:xxxxxxxxx) 表示选项(i 表示忽略大小写)
    • MulitLine
      • ^$ 的含义变为整个文本的首尾
    • SingleLine
      • 影响 . 的含义,不匹配 \r\n
  • 预编译

位置限定

  • ^ (首)
  • $ (尾)
  • \b 单词边界
  • \B 非单词边界

正则表达式工具

正则表达式类

1
using System.Text.RegularExpressions;
  • Static方法
1
Regex.IsMatch( s, pattern );
  • Regex 对象
1
2
3
4
IsMatch(s);
Match(s);
Matches(s);
Replace(s, r);
  • Match 对象
1
2
3
Groups;        // 各组
Value; // 原串
Result(xxxxx); // 替换

代码示例

  • Regex1
  • Regex2
  • 音乐播放器
    • 工具箱 \(\to\) 常规(右键) \(\to\) 通用 windows 组件 \(\to\) AxWMPLib.AxWindowsMediaPlayer