入力から絵文字IDを抽出したい。例えばC#で一致する文字列から数値を抽出する方法は?
、入力:
`<eid=1> valid get 1`
`<eid = > invalid `
`<exd = 1> invalid`
`< eid = 1000> valid get 1000`
私はそれらの文字列に一致する方法を知っているが、私はマッチした文字列からこれらのIDを抽出する方法については考えています。
入力から絵文字IDを抽出したい。例えばC#で一致する文字列から数値を抽出する方法は?
、入力:
`<eid=1> valid get 1`
`<eid = > invalid `
`<exd = 1> invalid`
`< eid = 1000> valid get 1000`
私はそれらの文字列に一致する方法を知っているが、私はマッチした文字列からこれらのIDを抽出する方法については考えています。
使用正規表現
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();
}
}
}
あなたはこのような何かを行うことができます。あなたは配列内の各アイテムを保存したくない場合(例:あなたは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>\>)");
あなたは試合が何であるかを理解する必要があり、キャプチャとどのようにすることができるものです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
で抽出することができます。
部分文字列を使用し、=のインデックスと数字の最後のインデックスを検索します – Alander