簡體   English   中英

在正則表達式中匹配{{string}} c#

[英]matching {{string}} in regex c#

什么是匹配兩個大括號內的字符串的正則表達式,如

{{string}}

結果應該是string

我是否必須逃避兩個大括號?

不,實際上以下應該可以正常工作:

"{{([^}]*)}}"

編輯:正如dtb所指出的, 上面的表達式在雙括號內的包含單個}的字符串失敗。 要處理這種情況,以下示例可以做得更好:

"{{((?:}(?!})|[^}])*)}}"

編輯2:最簡單的解決方案可能是以下內容:

"{{(.*?)}}"
{{string}}

:p

要么

{{(.*)}}

只有{{}}內的數字

{{([0-9])}}

只有一些字符:

{{([a-zA-Z])}}

這應該工作:

resultString = Regex.Match(subjectString, @"^\{\{(.*?)\}\}$").Groups[1].Value;

我相信這將是最好/最簡單的正則表達式來專門捕獲大括號的CONTENTS:

(?<={{).*?(?=}})

細分,這說:

01    (?<={{)   # match AFTER two open curly brackets
02    .*?       # match anything, but BE LAZY ABOUT IT
03    (?=}})    # until there are two closing curly brackets

使用此表達式,ENTIRE匹配將是大括號的內容,大括號將保留在原位/忽略

要匹配整個卷曲括號表達式,請使用以下命令:

01    {{        # match two open curly brackets
02    .*?       # match anything, but BE LAZY ABOUT IT
03    }}        # match two closing curly brackets

如果要在大括號內支持多行,請使用[\\s\\S]*? 而不是.*? 在第02行的部分中,或為正則表達式解析器指定'singleline'選項(Java中的DOTALL等等,等等)。

它不會拒絕像some text {{{inside}}} other test實例,並且可能產生不希望的結果 - 如果可能的話,請求更強的表達並指定應該和不應該匹配的幾個案例。

        string strRegex = @"{{(?<String>\w+)}}";
        Regex myRegex = new Regex(strRegex);
        string strTargetString = @"\n{{string}}";

       var match = myRegex.Match(strTargetString);

       string str = match.Groups["String"].Value;

str變量將是來自bracets的字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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