2016-10-06 4 views
1

私はそれらのような行を分割しようとしている:C#Regex.Splitは(ビルド方法)

root.MediaClip.MaxGroups=10 
root.MediaClip.M0.Name=Burglar_Alarm_Short 
root.MediaClip.M0.Location=/etc/audioclips/Burglar_Alarm_Short_8bit_32kHz_mono_PCM-16bit-little.wav 

しかし、私は「=」の後に分裂を停止する方法を見つけ出すことはできません。

ここでの結果は、分割が持っている必要があります。

root 
MediaClip 
MaxGroups=10 

root 
MediaClip 
M0 
Name=Burglar_Alarm_Short 

root 
MediaClip 
M0 
Location=/etc/audioclips/Burglar_Alarm_Short_8bit_32kHz_mono_PCM-16bit-little.wav 

問題は、ファイルの拡張子で終わる行です。しかし、 "="が到着した後、追加の分割は必要ありません。

答えて

3

あなたはどの=以外の文字、その後=または文字列の末尾に続いて、=で先行していない点でのみ分割する正規表現ベースの分割を使用することができます:

(?<=^[^=]*)\.(?=[^=]*(?:=|$)) 

regex demoを参照してください。

(?<=^[^=]*)=以外の文字0+と続いている文字列の開始後に表示されるドットを要求肯定後読み(^)であり、そして(?=[^=]*(?:=|$)肯定先読みも=または文字列の末尾((?:=|$)非参照を必要とします-capturing group)を0以外の文字に変更した場合。=以外の文字。 C#ので

var chunks = Regex.Split(str, @"(?<=^[^=]*)\.(?=[^=]*(?:=|$))"); 
+0

[OK]を、どうもありがとうございました!しかし今、私は、「=」が全くない場合に言及するのを忘れていました。 – Dobi

+0

問題はありません。先読みの代わりに文字列の末尾を追加するだけです: '(?<=^[^ =] *)\。(?= [^ =] *(?:= | $))'、この要件を反映するために答えてください。 –

+0

ありがとう! :)正規表現を1年に1〜2回しか使用しないと、それほど簡単ではありません。私は実際にいくつかのチュートリアルを詳しく見ていく必要があります。 – Dobi

関連する問題