我一直在尝试各种组合,似乎无法获得C#.Net应用程序所需的正则表达式。
我有一个文本文档,其中包含以下内容:
{{{3456764345345}}} yadda yadda yadda {{{xyz}}}
{{{3456764345345}}}可以包含任何字母数字值,每个文档会有所不同,而{{{xyz}}最初总是{{{xyz}}}。
所以,您可以拥有以下文件:
{{{3456764345345}}} yadda yadda yadda {{{xyz}}}
{{{45435555}}} yadda yadda yadda {{{xyz}}}
{{{54727r475t76777a4}}} yadda yadda yadda {{{xyz}}}
我想用不同的值替换{{{3456764345345}}}和{{{xyz}}}。问题是,当我尝试替换{{{3456764345345}}}时,它会替换自己和{{{xyz}}},因此我无法替换第二个值。
我目前正在使用:
{{{.*?}}}
作为我的表达。这可以找到第一个,但它也包括第二个。
我需要一个表达式,允许我找到第一个值,但不包括{{{xyz}}}值。
提前致谢。
答案 0 :(得分:2)
您可以首先替换{{{xyz}}}
子字符串,然后转到其他三重支撑子字符串或:
str = Regex.Replace(str, @"{{{(?!xyz\b)\w+}}}", "O_o");
str = Regex.Replace(str, @"{{{xyz}}}", "o_O");
打破{{{(?!xyz\b)\w+}}}
:
{{{
按字面意思匹配{{{
(?!xyz\b)
下一个字符不应该是xyz
\w+
匹配单词字符,至少一个}}}
按字面意思匹配}}}