我写了一个小程序,将英文文本转换为Visual Basic中的Pig Latin。我目前正在将其转换为C#语言。在转换过程中,我遇到了与正则表达式相关的错误。
我正在使用的规则是:
在VB中,我将这些规则编写如下(两个变量都是bool):
isVowel = words(counter) Like "[aeiou]*"
isInside = words(counter) Like "*[aeiouy]*"
Private index As Integer = -1
Private words(index) As String
。
和For循环
For counter As Integer = 0 To words.Length - 1
isVowel = words(counter) Like "[aeiou]*"
isInside = words(counter) Like "*[aeiouy]*"
//proceed with conversion logic
Next counter
经过研究,我使用以下article作为参考来帮助转换。我最终转换这些行如下:
isVowel = Regex.IsMatch(words[counter], "[aeiou]*");
isInside = Regex.IsMatch(words[counter], "*[aeiouy]*");
现在我正在测试文本中第一个字符串的这两个规则,即 adam 。在VB中,对于第一个字母a
,isVowel和isInside都返回true。对于C#,isVowel返回true,但isInside返回以下错误而不是我希望的true:
Quantifier {x,y} following nothing
我在SO中搜索了这些线程(这些是特定于案例的,但我尝试使用它的答案作为可能的指针)以及它建议的SO wiki。我尝试根据我从wiki和this thread(以及this one中学到的内容更新规则,我只使用一对来链接我发现的10多个线程关于*,+和?我试过用+和?在前面的字符模式。但它返回相同的错误。
能否请您指出为什么此规则会返回错误的正确方向?我错过了正则表达式C#特定的东西吗?