[英]Excluding specific regex match from general regex match
我一直在尝试各种组合,但似乎无法获得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}}}值。
提前致谢。
您可以先替换{{{xyz}}}
子字符串,然后再选择其他三括号子字符串,或者:
str = Regex.Replace(str, @"{{{(?!xyz\b)\w+}}}", "O_o");
str = Regex.Replace(str, @"{{{xyz}}}", "o_O");
将{{{(?!xyz\\b)\\w+}}}
分解为:
{{{
匹配{{{
(?!xyz\\b)
下一个字符不应该是xyz
\\w+
匹配单词字符,至少一个 }}}
匹配}}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.