2011-02-10 6 views
2

正規表現については、まったく正直ではありません。私は文字と数字の任意の並べ替えの組み合わせを含むことができる文字列を読み込んでいます。私が確かに知っているのは、文字列のどこかに%(1%、13%など)が続く数値があり、その数値を文字列から抽出したいのです。正規表現を構築するのに役立つ

例は次のとおりです。

[05:37:25] Completed 21% //want to extract 21 
[05:32:34] Completed 18000000 out of 50000000 steps (36%). //want to extract 36 

私はregex.Replaceまたはregex.Splitのいずれかを使用する必要がありますが、それ以外はわかりません。どんな助けもありがとう。

答えて

6

"(\d+)%"のようなものを使用できるはずです。これは、任意の数の連続した桁の文字に続いてパーセント記号に一致し、それを抽出して解析できるように実際の番号を取得します。これをRegex.Match()で使用し、結果のMatches配列を参照してください(配列の2番目の要素、インデックス1と思われます)。

小数点が必要な場合は、"(\d+(\.\d+)?)%"を使用します。これは、数字の文字列に続いて小数点、次に別の数字のセットと一致します。

+0

ありがとうございました。私は小数点について心配する必要はありません。私はそれを打ち、戻ってくる。 – xbonez

+0

美しく動作します。ありがとうございました。 – xbonez

+2

@xbonez、答えを正解と記すことを忘れないでください:) –

2

したい正規表現は次のとおりです。

/(\d+)%/ 

これはすぐにパーセント記号の前の数字の任意の数をキャプチャします。

1

([\d]+)(%)

  • 括弧するグループ結果。
  • [\d]+は、任意の数字を1回以上繰り返します。
  • "%"は単なるリテラルです。

最初のグループのみを抽出する必要があります。また、行に"<number>%"のインスタンスがないことを確認する必要があります。

このC#を具体的にする方法は完全にはわかりませんが、わかりました。 :-P ほとんどの場合、ダブルバックスラッシュを使用する必要があります(\\)私は1つしか持っていませんでした。

+0

ありがとうございます。私はC#で働いている。 – xbonez

関連する問題