正则表达式 - 替换括号之间的字符串

时间:2014-02-01 18:22:25

标签: regex vb.net

我一直在这里挖掘最后一两个小时,包括发布此标记的所有可能重复项。我绝对没有。

我只是试图替换括号内的文件名中的字符串,即

2014 01 26 0000 CFR (Float).DAT应该返回2014 01 26 0000 CFR (Tagname).DAT

2014 01 26 0000 CFR (String).DAT也应该返回2014 01 26 0000 CFR (Tagname).DAT

根据this问题,我正在使用:

Dim r As New Regex("\(.*\)")
Dim result As String = r.Replace(logfilename, "Tagname")

但这会返回2014 01 26 0000 CFR Tagname.DAT - 我需要保留括号。

我意识到我可以使用它,只需这样做:

Dim result As String = r.Replace(logfilename, "(Tagname)")

但这不是重点。

正则表达式(显然)不是我的强项。

更新

sln将不可避免的种子置于脑海之后,我终于接受了这个:

Dim tagfilename As String = ""
If Regex.Match(logfilename, "\(Float\)\.").Success Then
    tagfilename = Regex.Replace(logfilename, "\(Float\)\.", "(Tagname).")
End If
If Regex.Match(logfilename, "\(String\)\.").Success Then
    tagfilename = Regex.Replace(logfilename, "\(String\)\.", "(Tagname).")
End If

1 个答案:

答案 0 :(得分:2)

只需使用您拥有的内容Dim result As String = r.Replace(logfilename, "(Tagname)")

您可以使用前瞻和后视,但它会不必要地使正则表达式变得复杂:

Dim r As New Regex("(?<=\().*(?=\))")