如何在正则表达式中找到两个其他字符串之间的字符串?

Pet*_*ter 2 .net regex

或多或少显而易见:

\[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指数!谢谢.

Pau*_*ane 5

您需要使用一个组,它是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)