Regex .net正则表达式匹配由逗号分隔的两个单词无效

Regex .net正则表达式匹配由逗号分隔的两个单词无效,regex,vb.net,Regex,Vb.net,有人能给我解释一下吗。 我对perl正则表达式很在行,但显然我不明白为什么它不起作用 下面的代码将“人员测试”存储在输出变量中 im output As String Dim userName As String = "Test, Person" Dim re As New Regex("(\w+),\s(\w+)", RegexOptions.Singleline) output = re.Replace(userName, "$2 $1") Dim output As String Dim

有人能给我解释一下吗。 我对perl正则表达式很在行,但显然我不明白为什么它不起作用

下面的代码将“人员测试”存储在输出变量中

im output As String
Dim userName As String = "Test, Person"
Dim re As New Regex("(\w+),\s(\w+)", RegexOptions.Singleline)
output = re.Replace(userName, "$2 $1")
Dim output As String
Dim userName As String = "Test, Person"
Dim re As New Regex("(\w+),\s(\w+)")
For Each Match As Match In re.Matches(userName)
    output &= "#" & Match.ToString & "#"
Next
那么为什么下面的代码不在输出变量中存储“#Test###Person#”

im output As String
Dim userName As String = "Test, Person"
Dim re As New Regex("(\w+),\s(\w+)", RegexOptions.Singleline)
output = re.Replace(userName, "$2 $1")
Dim output As String
Dim userName As String = "Test, Person"
Dim re As New Regex("(\w+),\s(\w+)")
For Each Match As Match In re.Matches(userName)
    output &= "#" & Match.ToString & "#"
Next

谢谢你的帮助。

我想这会有用的

output = re.Replace(userName, "\2 \1")
第二:

For Each Match As Match In re.Matches(userName)
    output &= "#" & Match.Groups(1) & "#" & "#" & Match.Groups(2) & "#"
Next

您混淆了匹配项和组。匹配是整个匹配,包括组中和非组中的所有字符。组只是括号中匹配的一部分。在.NET中,组0是整个匹配项,其余组1,2,。。。etc与1美元、2美元等类似。。。在Perl中工作。如果您尝试运行以下命令,您可能会更好地理解:

    For Each Group As Group In re.Match(userName).Groups
        output &= "#" & Group.ToString & "#"
    Next

非常感谢。我知道我遗漏了一些简单的东西。