2017-02-23 11 views
-4

私はすべてのセグメントを含む文字列を持っています。それは次のようになります。文字列からセグメントを取得する方法は?

var myString = "<seg_0 status=0>This is segment zero</seg_0><seg_1 status=1>This is segment one</seg_1><seg_2 status=0>This is segment two</seg_2>" 

私はこのようなのArrayListに私の文字列からすべてのセグメントを取得したい:

{ 
{"index":"0","status":"0","seg":"This is segment zero"}, 
{"index":"1","status":"1","seg":"This is segment one"}, 
{"index":"2","status":"0","seg":"This is segment two"} 
} 

がどのように私は正規表現を使用して、これをアーカイブすることができますか?

+0

あなたは*特定の*の助けのために戻ってきて、その後、最初の問題を解決するために試してみてください。あなたの現在のコード、出力、およびあなたが立ち往生している場所の正確な記述を含めてください。 –

+1

'これをRegexを使ってアーカイブするには?'たぶん正規表現を書いていますか? – Reniuz

+0

はい。私は正規表現を書いてみたい。 –

答えて

3

この正規表現抽出3グループ:

<seg_(\d+)\sstatus=(\d+)>(.*?)<\/seg_\1> 
Full match 0-44 `<seg_0 status=0>This is segment zero</seg_0>` 
Group 1. 5-6 `0` -> index 
Group 2. 14-15 `0` -> status 
Group 3. 16-36 `This is segment zero` ->segment text 

は、文字列の使用中のすべての一致項目/<seg_(\d+)\sstatus=(\d+)>(.*?)<\/seg_\1>/g

+0

私はそれを試しています。 –

+0

私は今結果があります: var myString = "これはセグメントゼロですこれはセグメント1ですこれはセグメント2です"; Regex pattern = new Regex(@ "<セグ_(\ d +)\ sstatus =(\ d +)>(。*?)<\/seg_\1>"); マッチマッチ= pattern.Match(myString); foreach(match.Groups内のvarアイテム) { string value = item.ToString(); } 一致には最初のセグメントのみが含まれます。残りの部分はどのように入手できますか? –

+0

あなたの解決策は今、正しいです。私は私のソリューションのサンプルコードを完成しようとしています。 :D –

1

あなたはすべてのセグメントをキャプチャするために、次の正規表現を試してみて、それらを交換することにより、配列を作ることができますを抽出しますキャプチャされたグループと:

input >> <seg_0 status=0>This is segment zero</seg_0> 
      <seg_1 status=1>This is segment one</seg_1> 
      <seg_2 status=0>This is segment two</seg_2> 
regex >> <seg_(\d+)[\s\w]+=(\d+)>([\w\s]+)<\/seg_\d+> 
replace with >> {"index":"$1","status":"$2","seg":"$3"}, 
output >> {"index":"0","status":"0","seg":"This is segment zero"}, 
      {"index":"1","status":"1","seg":"This is segment one"}, 
      {"index":"2","status":"0","seg":"This is segment two"}, 
demo/explanation(おそらく)

C#

using System; 
using System.Text.RegularExpressions; 

public class RegEx 
{ 
    public static void Main() 
    { 
     string pattern = @"<seg_(\d+)[\s\w]+=(\d+)>([\w\s]+)<\/seg_\d+>"; 
     string substitution = @"{""index"":""$1"",""status"":""$2"",""seg"":""$3""},"; 
     string input = @"<seg_0 status=0>This is segment zero</seg_0><seg_1 status=1>This is segment one</seg_1><seg_2 status=0>This is segment two</seg_2>"; 

     Regex regex = new Regex(pattern); 
     string result = regex.Replace(input, substitution); 
    } 
} 
関連する問題