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

Regex 匹配某些字母组合,同时避免误报,regex,vb.net,Regex,Vb.net,我正在尝试匹配美国英语音素,它是一个或两个代表声音的字符() 每个音素必须用空格隔开。出于这个问题的目的(除非您想跟随链接并使用实际的音素),让我们假设音素集由以下内容组成:“a”、“aa”、“ae”、“bb”、“cc”。字符串中可能只有一个音素,或者可能有任意数量的音素组合(以空格分隔)。我如何匹配“a”或“aa”而不匹配“aaa” 以下情况并不完全正确: If Regex.Match(TextBox1.Text, "^([(a)(aa)(ae)(bb)(cc)]( )?)+$", R

我正在尝试匹配美国英语音素,它是一个或两个代表声音的字符()

每个音素必须用空格隔开。出于这个问题的目的(除非您想跟随链接并使用实际的音素),让我们假设音素集由以下内容组成:“a”、“aa”、“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})]( )?)+$", 
使用锚:

\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

那会让你大吃一惊的,你一定是打错了。看,啊。我当时正在工作,只能访问那里的VBScript,因此需要进行代码转换。翻译过程中有些东西丢失了。谢谢你的帮助!