Я вот уже несколько часов копаюсь здесь, включая все возможные дубликаты, помеченные этим сообщением. У меня абсолютно нет нигде.Regex - замена строки между круглыми скобками
Я просто пытаюсь заменить строку в имени файла в скобках, т.е.
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
As за 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)")
, но это не главное.
Regex (очевидно) не моя сильная сторона.
Update:
После 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
На самом деле, что является хорошим решением, независимо от того, какой «точки» вы говорите. –
@aleph_null: Это только я - я просто подумал, что это немного глупо, снимая круглые скобки, только чтобы добавить их снова после. Тем не менее, все работает! –
Вероятно, следует использовать '\ ([^()] * \)' в качестве замены регулярное выражение '(Tagnamee)'. Обозначая '. *', Вы можете сопоставить другие '()' 's в строке. – sln