2012-04-28 11 views
-1

との一致を取得しようとすると、私は冒頭で変数空白と次のテキストを持っている:正規表現

 Total Saving: 84% 

私は試合を得るトラブルを抱えています。私がこれまでに学んだこと(正規表現に新しい)から。これは、作業に近いものでなければならない(私は、テキストのみのいずれかの側に一致する必要があります):私は間違って何をやっている

[\s]* Total Saving: [0-9%]*

+0

私のために働く... – Ryan

+0

どのようにして、あなたは何をしたいのですか? –

+0

これは正規表現のリテラルスペースが重要であるため、 'Total Saving:'の前後に空白がない限り動作します。 –

答えて

1

結果を保持するキャプチャグループを指定しておらず、パーセント記号%は文字列内に複数回現れてはなりません。

\s*Total Saving:\s*([0-9]+)%(真ん中の空白でもう少し柔軟性があります) - 最初のグループには実際の割合が含まれます。

+0

乾杯、これは、働いた、私はすぐに正規表現wizになります...! – Erbilacx

+0

Jeffrey Friedl(O'Reilly)の "Mastering Regular Expressions"を読むことを強くお勧めします。そうすれば、あなたは一層早くなることができます。 –

0

試してみてください。

/^\s+Total\sSaving:\s+([0-9]{1,3})%$/ 

(私は0..100からその範囲を想定)数字のみを取得します。いくつかの行のために働く。

+0

最後に$/mとは何ですか?と{1,3}? – Erbilacx

+0

^.. $は、行全体が正規表現にマッチすることを示します。正規表現で改行が見つからないので、ここではmは必要ないと思う(Mは、^ .. $と改行(\ n)の間にあると言っている)。私はこれを修正しました。 {1,3}は1桁から3桁の数字が必要だと言っています。 +は無限の桁まで1を検索します。 – cr0