之間返回字符串我試圖使用C#兩個標籤
var added = Regex.Match(Text,
"\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);
返回標籤[BEGINTAG]和[/ ENDTAG]文本字符串之間的字符串。我無法弄清楚我的正則表達式常量有什麼問題。
之間返回字符串我試圖使用C#兩個標籤
var added = Regex.Match(Text,
"\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);
返回標籤[BEGINTAG]和[/ ENDTAG]文本字符串之間的字符串。我無法弄清楚我的正則表達式常量有什麼問題。
你的正則表達式很好。你只需要提取1組(你括號之間不匹配的東西)
在C#這成爲
Regex regexObj = new Regex(@"\[BEGINTAG\](.+?)\[/ENDTAG\]");
resultString = regexObj.Match(subjectString).Groups[1].Value;
讓我知道這是否正常工作
此外,僅供參考,您不需要和你一樣逃脫。這也不錯:
\[BEGINTAG](.+?)\[/ENDTAG]
一個可能的問題是,你沒有你的字符串前@
,所以C#是治療\
字符作爲C#逃逸,而不是正則表達式逃逸。
Buckley的回答顯示如何用@
作爲字符串的前綴,以便將\
作爲正則表達式轉義處理。在C#中使用這種格式的正則表達式幾乎總是更好。否則,你會得到這樣的結果。
var added = Regex.Match(Text,
"\\[BEGINTAG\\](.+?)\\]\\/ENDTAG\\]", RegexOptions.None);
我發現很難讀。
如果您對性能感興趣,很高興知道\ [BEGINTAG]([^ [] *)\ [/ ENDTAG]不需要任何回溯,預計效果會更好。 – buckley
謝謝,工作完美。 – Subliminy