Skip to main content
 首页 » 编程设计

c#之分隔符之间的正则表达式为大写

2024年01月28日26findumars

我正在寻找一个正则表达式来查找任何 $$some_val$$ 并将 some_val 替换为大写字母。

例如输入是:-

<p><a href='accept/272/$$id$$'>YES</a></p> 
<p>Hi $$FirstName$$ some more text $$date$$ lorem ipsum</p> 
<h1>$$club$$</h1> 
$$content$$ 

会输出:-

<p><a href='accept/272/$$ID$$'>YES</a></p> 
<p>Hi $$FIRSTNAME$$ some more text $$DATE$$ lorem ipsum</p> 
<h1>$$CLUB$$</h1> 
$$CONTENT$$ 

目前我有以下正则表达式:-

var html = Regex.Replace(html, @"\$\$(.*)\$\$", m=> m.Value.ToUpper()); 

但它产生了不正确的结果。

<p><a href='accept/272/$$ID$$'>YES</a></p> 
<p>Hi $$FIRSTNAME$$ SOME MORE TEXT $$DATE$$ lorem ipsum</p> 
<h1>$$CLUB$$</h1> 
$$CONTENT$$ 

因为 SOME MORE TEXT 在开始和结束 $$ 分隔符之间也是大写的。

请注意 $$ 可能会在一行中重复出现或在一行中开始/结束。

请您参考如下方法:

您只需要使用非贪婪/惰性匹配量词 (*?):

var regex = new Regex(@"\$\$.*?\$\$"); 
var input = "this $$is a$$ test of the $$procedure$$"; 
var output = 
     r.Replace(input, m=>m.Value.ToUpper());