0

この行の#の前のすべての最初の桁を一致させる方法

26909578#Sbrntrl_7x06-lilla.avi#356028416#2012-10-24 09:06#0#http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html#[URL=http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html]http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html[/URL]#<a href="http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html">http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html</a>#http://bitshare.com/?f=dvk9o1oz#http://bitshare.com/delete/dvk9o1oz/4511e6f3612961f961a761adcb7e40a0/Sbrntrl_7x06-lilla.avi.html

この番号を取得しようとしています26909578私の試み

   string text = @"26909578#Sbrntrl_7x06-lilla.avi#356028416#2012-10-24 09:06#0#http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html#[URL=http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html]http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html[/URL]#<a href=""http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html"">http://bitshare.com/files/dvk9o1oz/Sbrntrl_7x06-lilla.avi.html</a>#http://bitshare.com/?f=dvk9o1oz#http://bitshare.com/delete/dvk9o1oz/4511e6f3612961f961a761adcb7e40a0/Sbrntrl_7x06-lilla.avi.html";

        MatchCollection m1 = Regex.Matches(text, @"(.+?)#", RegexOptions.Singleline);

しかし、その後、すべてのテキストを出力します

4

4 に答える 4

3

文字列の先頭から開始する必要があることを明示します。

@"^(.+?)#"

または、これが常に数字になることがわかっている場合は、使用可能な文字を数字に制限します。

@"^\d+"

Matchまたは、の代わりに関数を使用しますMatchesMatches「すべての一致を教えてください」と明示的に言いますがMatch、最初の一致のみが返されます。

于 2012-10-31T18:45:51.020 に答える
1

または、このような些細なケースでは、非正規表現アプローチを検討することもできます。このIndexOf()メソッドは「#」を見つけ、前に来たものを簡単に取り除くことができます。

sscanf()はC#の代替品も作成しました。これは、私の記事A sscanf()Replacementfor.NETで確認できます。

于 2012-10-31T18:47:46.573 に答える
1

正規表現を使用したくない/使用したくない場合は、文字列ビルダーを使用して、#を押すまでループします。

こんな感じ

StringBuilder sb = new StringBuilder();
string yourdata = "yourdata";
int i = 0;
while(yourdata[i]!='#')
{
   sb.Append(yourdata[i]);
   i++;
}

//when you get to that # your stringbuilder will have the number you want in it so return it with .toString();

string answer = sb.toString();
于 2012-10-31T18:50:42.133 に答える
1

文字列全体(最後のURLを除く)は、によって一致する可能性のあるセグメントで構成されている(.+?)#ため、いくつかの一致が得られます。マッチングによって返されたコレクションから最初の一致のみを取得します.+?(?=#)

于 2012-10-31T18:51:12.740 に答える