如何用VB.NET正则表达式替换字符串首尾字符与子串
解决VB正则替换问题:将{xxx?}转换为xxx_Den
看来你离想要的结果只差一点点啦!你当前的正则只替换了?}部分,但还保留了开头的{,而且没有正确提取出中间的变量名来拼接后缀。我们需要调整正则,精准捕获变量名并完成替换。
问题分析
你的目标是把{capital?}这类格式的字符串,转换成capital_Den——也就是要去掉大括号和问号,同时在变量名后加上_Den。
正确的正则实现
我们可以用捕获组来提取{和?}之间的变量名,然后替换成[变量名]_Den。对应的正则表达式是:\{([^?]+)\?\}
正则拆解:
\{:匹配左大括号(需要转义,因为{在正则里是特殊字符)([^?]+):捕获组,匹配除了问号之外的所有字符(也就是我们要的变量名)\?\}:匹配问号和右大括号(同样需要转义)
VB代码示例
Imports System.Text.RegularExpressions ' 记得引入正则命名空间 Dim SourceString As String = "{capital?} has a bridge for {people?}" Dim ResultString As String = Regex.Replace(SourceString, "\{([^?]+)\?\}", "$1_Den")
执行这段代码后,ResultString的值就是:capital_Den has a bridge for people_Den,完全符合你的预期。
补充说明
$1在替换字符串中代表正则里第一个捕获组匹配到的内容(也就是capital、people这类变量名)- 如果你的变量名可能包含特殊字符,可以根据实际情况调整
[^?]+的匹配规则,比如允许下划线的话可以改成[\w]+
内容的提问来源于stack exchange,提问作者jonathan
相关产品推荐
相关产品推荐

