0

正規表現の領収書から合計金額を取得しようとしています。

フォーマットは次のとおりです。

TOTAL     15.40

目標は、価格を文字列から取り除くことだけです。

私はから始めましたTOTAL[ .0-9]が、これは単語を返すだけでしたTOTAL

私はグーグルでこれをまとめましたが、動作させることができません:

TOTAL(\\s+)(?<value>[.0-9]+)

私は次のコードを作成しました:

sRegex = "TOTAL(\\s+)(?<value>[.0-9]+)";    
Match match = Regex.Match(this.sHTMLResult, sRegex, RegexOptions.None);
if (match.Success)
    Console.Out.WriteLine("regex good");
else
    Console.Out.WriteLine("regex fail");

しかし、正規表現は成功を返しません。

次のような形式のHTMLファイルから取得しようとしています。

TOTAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15.40
4

5 に答える 5

1

(?(\b.*\b\s)([0-9.]*[0-9]))動作するはずです。

少なくとも私にとって本当に役立つ正規表現ヒーローオンラインエディタを使用することをお勧めします。

于 2013-03-12T10:21:31.720 に答える
1

あなたが使用するかもしれません:

"TOTAL *(\d*.\d*)"

于 2013-03-12T10:19:28.040 に答える
1

最初の正規表現は、提供されたテキストで正常に機能します。

TOTAL(\\s+)(?<value>[.0-9]+)

ただし、コメントで示したように、これはHTMLからのものであり、ブレークスペースのない文字エンティティが含まれているため、これらも考慮する必要があります。

TOTAL(\\s+|(&nbsp;)+)(?<value>[.0-9]+)
于 2013-03-12T10:26:24.910 に答える
0

正規表現は機能しますが(提案どおりに入力を確認してください)、小さなバグがあります。数字とドットの任意の組み合わせをキャプチャします(333.3.2.22 ....など)。より適切なものは次のとおりです。

TOTAL\s+(?<value>\d+\.\d+)
于 2013-03-12T10:19:40.293 に答える
-2

TOTALと量の間に空白が1つしかない場合は、正規表現で空白を使用できます。さらに、これを試してください:

sRegex = "TOTAL ([0-9]+\.[0-9]+)";

MSDNリファレンスについては、こちらを参照してください。

于 2013-03-12T10:16:51.050 に答える