我是 Regex 新手,但我有一系列类似于此的字符串 "[$myVar.myVar_STATE]" 我需要替换第二个 myVar以句点开头并以下划线结尾。我需要它与它完全匹配,因为有时我会有 [$myVar.myVar_moreMyVar_STATE]" ,在那种情况下我不想替换任何东西。
我已经尝试过 "\b.myVar_\b", "\.\bmyVar_\b" 和其他一些东西,但都没有成功。
请您参考如下方法:
这个怎么样:
\[\$myVar\.([^_]+)_STATE\]
匹配:
[$myVar.myVar_STATE] // matches and captures 'myvar'
[$myVar.myVar_moreMyVar_STATE] // no match
工作正则表达式示例:
或者如果 _STATE 是变量,你可以使用这个:(只要 STATE 部分的文本没有下划线。)
\[\$myVar\.([^_]+)_[^_]+\]
工作正则表达式示例:
编辑: 符合 OP 在下面的评论,这应该是他想要的:
(\[\$myVar\.)([^_]+)(_[^_]+\])
正则表达式替换示例:
C#
var pattern = @"(\[\$myVar\.)([^_]+)(_[^_]+\])";
var replaced = Regex.Replace(input, pattern, "$1"+ newVar + "$3")
