我试图匹配美国英语音素,这些音素是代表声音的一个或两个字符(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})]( )?)+$",
答案 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