Skip to main content
 首页 » 编程设计

c#之正则表达式匹配以句点开头并以下划线结尾的单词

2024年02月01日25grandyang

我是 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 

工作正则表达式示例:

http://regex101.com/r/yM9jQ3

或者如果 _STATE 是变量,你可以使用这个:(只要 STATE 部分的文本没有下划线。)

\[\$myVar\.([^_]+)_[^_]+\] 

工作正则表达式示例:

http://regex101.com/r/kW8oE1

编辑: 符合 OP 在下面的评论,这应该是他想要的:

(\[\$myVar\.)([^_]+)(_[^_]+\]) 

正则表达式替换示例:

http://regex101.com/r/pU6yL8

C#

 var pattern = @"(\[\$myVar\.)([^_]+)(_[^_]+\])"; 
 var replaced = Regex.Replace(input, pattern, "$1"+ newVar + "$3")