Шаблон \{?\?\}
соответствует необязательному {
, ?
, а затем }
char.
Вы можете использовать
str1 = Regex.Replace(str, "\{(\w+)\?\}", "$1_DEN")
Или, если есть возможность быть больше, чем просто символы слова внутри:
str1 = Regex.Replace(str, "\{([^{}]+)\?\}", "$1_DEN")
См. VB. NET демо онлайн и regex demo . Шаблон соответствует:
\{
- {
char (\w+)
- Группа 1: одно или несколько символов слова [^{}]+
- 1+ символов кроме {
и }
\?\}
- подстрока ?}
.
Полный VB. NET Фрагмент кода:
Dim str As String = "{capital?} has a bridge for {people?}"
Dim str1 As String
str1 = Regex.Replace(str, "\{(\w+)\?\}", "$1_DEN")
Console.WriteLine(str1)
' -> capital_DEN has a bridge for people_DEN