匹配某些字母组合,同时避免误报

时间:2014-07-25 01:42:03

标签: regex vb.net

我试图匹配美国英语音素,这些音素是代表声音的一个或两个字符(http://msdn.microsoft.com/en-us/library/ms717239(v=vs.85).aspx)。

每个音素必须用空格分隔。出于这个问题的目的(除非你想要关注链接并使用实际音素),让我们说音素集包含以下内容:" a"," aa& #34;," ae"," bb"," cc"。字符串中可能只有一个音素,或者可能有任意数量的任何组合(空格分隔)。我怎样才能匹配" a"或" aa"没有匹配" aaa"?

以下内容不太正确:

    If Regex.Match(TextBox1.Text, "^([(a)(aa)(ae)(bb)(cc)]( )?)+$", RegexOptions.IgnoreCase).Success Then
        MsgBox("valid")
    Else
        MsgBox("invalid")
    End If

    'Also doesn't work: If Regex.Match(TextBox1.Text, "^([(a{1,2})(ae)(b{2})(c{2})]( )?)+$", 

1 个答案:

答案 0 :(得分:1)

使用锚点:

\b(?:a|aa|ae|bb|cc)\b

以下是如何迭代匹配。

Dim RegexObj As New Regex("\b(?:a|aa|ae|bb|cc)\b", RegexOptions.Multiline)
Dim MatchResults As Match = RegexObj.Match(SubjectString)
While MatchResults.Success
    ' matched text: MatchResults.Value
    ' match start: MatchResults.Index
    ' match length: MatchResults.Length
    MatchResults = MatchResults.NextMatch()
End While