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

标签 c# regex

我正在寻找一个正则表达式来查找任何 $$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());

关于c# - 分隔符之间的正则表达式为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15205834/

相关文章:

python - 正则表达式仅捕获 0 到 85

用于匹配字符的正则表达式,但不包括在引号中时

c# - 将 XML 转换为包含行的数据集

c# - ASP.NET Web API 使用 Url.Action 生成 URL

c# - 获取json数据和图片

javascript - 如果周围有标签,不要用正则表达式抓取单词 JS

c# - 解析是获取成员类型的唯一方法吗?

c# - Twilio 检测是否有人回答

regex - bash 为什么我的正则表达式不起作用?

javascript - 正则表达式/分割句子