2017-09-30 4 views
1

入力から絵文字IDを抽出したい。例えばC#で一致する文字列から数値を抽出する方法は?

、入力:

`<eid=1> valid get 1` 
`<eid = > invalid ` 
`<exd = 1> invalid` 
`< eid = 1000> valid get 1000` 

私はそれらの文字列に一致する方法を知っているが、私はマッチした文字列からこれらのIDを抽出する方法については考えています。

+0

部分文字列を使用し、=のインデックスと数字の最後のインデックスを検索します – Alander

答えて

0

使用正規表現

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string[] inputs = { 
            "<eid=1>", 
            "<eid = >", 
            "<exd = 1>", 
            "< eid = 1000>" 
           }; 
      string pattern = @"\<\s*eid\s*=\s*(?'number'\d+)\s*\>"; 

      foreach (string input in inputs) 
      { 
       Match match = Regex.Match(input, pattern); 
       if (match.Success) 
       { 
        Console.WriteLine("input : '{0}' Does Match, number = '{1}'", input, match.Groups["number"]); 
       } 
       else 
       { 
        Console.WriteLine("input : '{0}' Does not Match", input); 
       } 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
0

あなたはこのような何かを行うことができます。あなたは配列内の各アイテムを保存したくない場合(例:あなたはhtmlコードを持っている)以下を使用して、あなたは、1つの文字列としてすべての値を格納することができます:

var input = @"`<eid=1> valid get 1` 
       `<eid = > invalid ` 
       `<exd = 1> invalid` 
       `< eid = 1000> valid get 1000`"; 
var regex = new Regex(@"(?<open>\=).*?(?<final-open>\>)"); 
var matches = regex.Matches(input).Cast<Match>().Select(m => m.Groups["final"].Value).Distinct().ToList(); 

foreach (var match in matches) 
{ 
    // here you have all the matches 
    var id = int.Parse(match.Trim()); 
} 

をこの方法では、開口部を設定し、これは「\ =」開かれたタグであり、これは、終了タグでどこが望む試合のタグを閉じる「>」:

var regex = new Regex(@"(?<open>\=).*?(?<final-open>\>)"); 
0

あなたは試合が何であるかを理解する必要があり、キャプチャとどのようにすることができるものです1つは特定のデータのキャプチャに一致します。正規表現の分野において


一致とグルーピング捕捉と基本差があります。

合計値<eid=8>を一致させたいが、値8キャプチャにしたいと思っている。これは、グループ化()パターンを追加して、1対多数のキャプチャグループを確立することによって行われます。マッチには、1からNまでインデックス付けされた1つ以上のグループを保持できます。ゼロは、自動的に行われ、後で説明される特別なグループです。グループ捕捉値の使用この正規表現<\w+=(\d+)\>(代わりの生存パターン<\w+=\d+\>)にデータ<eid=8>ためだから


、。グループ化とは、数字を1の一致捕獲グループに入れ、値を8とするものです。

グループとは何ですか?

  • Groups[0]は、そのようなあなたが<eid=8>で見るものとして常にマッチ全体です。
  • Groups[1-N]は、()構成が指定されたときに個別にキャプチャされます。したがって、例の場合は8の番号です。 あなたの質問にお答えします。
  • (<?<{name here}>...)を入れて名前付きマッチキャプチャを行うことができます。そのロジックによって、パターンを<\w+=(?<TheNumbers>\d+)\>に変更することができ、Groups["TheNumbers"].Value、さらにはGroups[1].Valueで抽出することができます。
関連する問題