正则表达式语言是一种专门用于字符串处理的语言。正则表达式语言由两种基本字符类型组成:原义文本字符和转义字符。转
义字符使正则表达式具有处理能力。
使用正则表达式,可以对字符串执行许多复杂而高级的操作.
- 区分字符串中所有重复的单词。
- 把所有单词都转换为标题格式。
- 把长于3个字符的所有单词都转换为标题格式。
- 确保句子有正确的大写形式。
- 区分URL的各个元素。
在.NET Framework中使用正则表达式时,需要使用Regex类。Regex类表示不可变(只读)的正则表达式,它包含多种静态方法,其中常用的就是Matches()方法,该方法可以搜索正则表达式的所有匹配项,并返回所有成功的匹配。.NET Framework使用Match类表示正则表达式匹配操作的结果,另外Match类的Success属性可以指示是否已找到匹配。
Regex 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.text.regularexpressions.regex?view=netcore-3.1
表示不可变的正则表达式。
方法
Match(String) | 在指定的输入字符串中搜索 Regex 构造函数中指定的正则表达式的第一个匹配项。 |
RegexOptions 枚举
字段
CultureInvariant | 512 | 指定忽略语言中的区域性差异。 有关详细信息,请参阅正则表达式选项文章中的“使用固定区域性的比较”部分。 |
ExplicitCapture | 4 | 指定唯一有效的捕获是显式命名或编号的 (?<name>...) 形式的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) 显得笨拙。有关详细信息,请参阅正则表达式选项文章中的“仅显式捕获”部分。 |
IgnoreCase | 1 | 指定不区分大小写的匹配。 有关详细信息,请参阅正则表达式选项文章中的“不区分大小写匹配”部分。 |
IgnorePatternWhitespace | 32 | 消除模式中的非转义空白并启用由 # 标记的注释。 但是,此值不影响或消除标记单独的正则表达式语言元素的开头的字符类、数值量词或标记的空格。 有关详细信息,请参阅正则表达式选项一文中的“忽略空格”部分。 |
Multiline | 2 | 多行模式。 更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。 有关详细信息,请参阅正则表达式选项文章中的“多行模式”部分。 |
None | 0 | 指定不设置任何选项。 有关正则表达式引擎的默认行为的详细信息,请参阅正则表达式选项文章中的“默认选项”部分。 |
RightToLeft | 64 | 指定搜索从右向左而不是从左向右进行。 有关详细信息,请参阅正则表达式选项文章中的“从右到左模式”部分。 |
Singleline | 16 | 指定单行模式。 更改点 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。 有关详细信息,请参阅正则表达式选项文章中的“单行模式”部分。 |
在.NET Framework中使用正则表达式时,需要使用Regex类。Regex类表示不可变(只读)的正则表达式,它包含多种静态方法,其中常用的就是Matches()方法,该方法可以搜索正则表达式的所有匹配项,并返回所有成功的匹配。.NET Framework使用Match类表示正则表达式匹配操作的结果,另外Match类的Success属性可以指示是否已找到匹配。
下面一个小示例,执行并显示一些搜索的结果,以此说明正则表达式的一些特性,以及如何在Visual Basic中使用.NET正则表达式引擎。为了说明正则表达式.NET类,这里先进行一次纯文本的搜索,这次搜索不带任何转义序列或正则表达式命令,通常将这个搜索字符串称为模式。
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim Text As String = "这些都是可以在Visual Basic中用" & "System.String和System.Text.StringBuilder的各种方法执行的任务"
Dim Pattern As String = "String"
Dim Matches As MatchCollection = _
Regex.Matches(Text, Pattern, RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture)
For Each NextMatch In Matches
Console.WriteLine(NextMatch.index)
Next
Console.Read()
End Sub
End Module