我一直在这里挖掘最后一两个小时,包括发布此标记的所有可能重复项。我绝对没有。
我只是试图替换括号内的文件名中的字符串,即
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
答案 0 :(得分:2)
只需使用您拥有的内容Dim result As String = r.Replace(logfilename, "(Tagname)")
。
您可以使用前瞻和后视,但它会不必要地使正则表达式变得复杂:
Dim r As New Regex("(?<=\().*(?=\))")