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