或多或少显而易见:
\[start\](.*?)\[end\]
Run Code Online (Sandbox Code Playgroud)
但这也会产生[start]和[end]标签.你怎么省略它们?
例如: f("[somestartstring]result[someendstring]") == "result"
更新:建议的答案不起作用.我的代码是:
printfn "%s" (Regex.Match(@"[start]result[end]",
"\\[start\\](.*?)\\[end\\]").Groups.[0].Value)
Run Code Online (Sandbox Code Playgroud)
但它仍会产生周围的开始和结束标记.
我的错误是:0指数!谢谢.
您需要使用一个组,它是parantheses中的匹配字符串:
\[start\](.*?)\[end\]
Run Code Online (Sandbox Code Playgroud)
当你来阅读时,它们从1开始编号(零是整个匹配的字符串).(如果您发现更直观,还有命名组的功能.)
例如在C#中:
Match match = new Regex("\[start\](.*?)\[end\]").Match("[start]blah[end]");
string value = match.Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)