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

时间:2014-01-04 16:20:10

标签: 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]").Matches(text)

End Sub
End Class

所以现在所有的字母都在0组中,那很好但我怎么能在组0中列出不属于0组的其他东西呢?一个更好的例子就是说我有一个字符列表!“我想在第0组和第1组中的任何其他东西,唯一可能的方式思考,而不是说这可行是重复。([!” “£])([^!”“£])并不是说那些有效,但我关心的是这个列表是否增长,重复也是如此。

我希望那清楚,不确定要谷歌的用途:)

1 个答案:

答案 0 :(得分:0)

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

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组中捕获。这是有效的,因为正则表达式引擎将尝试查找匹配从交替左侧的第一个模式开始,然后向右移动。