Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式分组-匹配/不匹配事件_Regex_Vb.net - Fatal编程技术网

Regex 正则表达式分组-匹配/不匹配事件

Regex 正则表达式分组-匹配/不匹配事件,regex,vb.net,Regex,Vb.net,我在VB.Net中练习我的正则表达式组,同时阅读我的新烹饪书,我想知道是否有可能将一组字符、数字或所需的匹配项归为一组,而将其他不匹配项归为另一组。请记住,这只是为了好玩和学习。我将匹配的示例字符串 HelloWorld123 Public Class Form1 Private Sub foo() Dim text = "HelloWorld123" Dim m = New System.Text.RegularExpressions.Regex("(?i)[a-z]").Ma

我在VB.Net中练习我的正则表达式组,同时阅读我的新烹饪书,我想知道是否有可能将一组字符、数字或所需的匹配项归为一组,而将其他不匹配项归为另一组。请记住,这只是为了好玩和学习。我将匹配的示例字符串

HelloWorld123

Public Class Form1
Private Sub foo()
    Dim text = "HelloWorld123"
    Dim m = New System.Text.RegularExpressions.Regex("(?i)[a-z]").Matches(text)

End Sub
End Class

所以现在所有的字母都在0组中,这很好,但是我怎样才能将不在0组中的任何其他字母列在1组中呢?一个更好的例子是,我有一个字符列表!“我想在第0组和第1组中的任何其他内容中,我唯一可能思考的方法,并不是说这会起作用的是复制。([!”)([^!”))并不是说这是有效的,但我担心的是,如果这个列表增长,复制也会增加。

你可以否定字符类,例如,
[^a-z]
将匹配除
a
z
之外的任何字符,然后使用替换(
|
)分别捕获它们:

Dim m = New System.Text.RegularExpressions.Regex("(?i)[a-z]|([^a-z])").Matches(text)
但就这一点而言,您可以像这样匹配任何字符(
):

Dim m = New System.Text.RegularExpressions.Regex("(?i)[a-z]|(.)").Matches(text)
在这里,任何与第一个模式
[a-z]
不匹配的内容都将与第二个模式
匹配,并在组1中捕获。这是因为正则表达式引擎将尝试从交替左侧的第一个模式开始查找匹配项,然后向右移动