0

テキストを <> 文字で分割したい。
例文字列があるとします

 string Name="this <link> is my <name>";

これを分割して、次のような文字列の配列を作成します

ar[0]="this "
ar[1]="<link>"
ar[2]=" is my "
ar[3]="<name>"

私は次のような分割機能を試していました

string[] ar=Name.Split('<');

私も試してみました

 string[] nameArray = Regex.Split(name, "<[^<]+>");

しかし、これは私に与えていません

 "<link>"
 and "<name>"

しかし、それは良いアプローチではありません。ここで正規表現
を使用できますか。

4

1 に答える 1

8

これ

Regex r = new Regex(@"(?<=.)(?=<)|(?<=>)(?=.)");
foreach (var s in r.Split("this_<link>_is_my_<name>"))
{
    Console.WriteLine(s);
}

与える

this_
<link>
_is_my_
<name>

(わかりやすくするためにアンダースコアを使用)

正規表現は、次のいずれかのゼロ幅ポイントで分割されます (したがって、何も削除されません)。

  • 何かが先行し、その後が続く<
  • 前後に>何かが続く

文字列が括弧内の何かで開始または終了する場合、開始または終了で空の文字列を避けるために、「何か」チェックが必要です。

"<link<link>>"次のようなものが得られることに注意{ "<link", "<link>", ">" }してください。山かっこのバランスをとってください。

文字列が で始まるか終わる場合に空の文字列が必要な場合は、を使用できます。に遭遇したときに途中で空の文字列が必要な場合は、最初に分割してからすべての結果を分割する必要があると思います-一度に実行できるとは思いません。<>(?=<)|(?<=>)><(?=<)(?<=>)

于 2012-11-20T10:39:35.650 に答える