簡體   English   中英

從一般正則表達式匹配中排除特定正則表達式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM