5

二重角かっこで囲まれた単語を照合および分割するための正しい正規表現構文を見つけようとしています。

const string originalString = "I love to [[verb]] while I [[verb]].";

私は試した

var arrayOfStrings = Regex.Split(originalString,@"\[\[(.+)\]\]");

しかし、それは正しく機能しませんでした。何が間違っているのかわからない

arrayOfStringsをそのように出してほしい

arrayOfStrings[0] = "I love to "
arrayOfStrings[1] = "[[verb]]"
arrayOfStrings[2] = " while I "
arrayOfStrings[3] = "[[verb]]"
arrayOfStrings[4] = "."
4

2 に答える 2

8

それがあなたが必要としているものだと思います。

string input = "I love to [[verb]] while I [[verb]].";
string pattern = @"(\[\[.+?\]\])";

string[] matches = Regex.Split( input, pattern );

foreach (string match in matches)
{
    Console.WriteLine(match);
}
于 2013-02-13T19:51:18.410 に答える
3

あなたが望むものを正確に生み出す答えはです@"(?=\[\[.*?\]\])|(?<=\]\])"

|これには、 「または」記号で区切られた2つの部分があります。

(?=\[\[.*?\]\])[[直後にいくつかの文字と。が続く記号を探し、その記号と。]]の間で分割し[ます。

(?<=\]\])]]の直前にあり、直後に分割されている記号を探します]

これらは「先読み」および「後読み」と呼ばれ、ここでそれらのより多くのバリエーションを見つけることができます。

于 2013-02-13T20:02:45.593 に答える