-4

さまざまなファイルから合計金額を解析する必要があります。各ファイルのレイアウトは異なるため、解析する必要がある行は異なります。

「Total」の後にある数値を文字列からキャプチャするための正規表現は何ですか?

大文字と小文字を区別せず、"Total" の後に最も近い一致を考慮する必要があります。「合計」という言葉の前後には何でもかまいませんが、その後に続く最初の数字が必要です。

例えば:

from string "Service charges: 10 Total: 100 Shipping: 10"
from string "Service charges: 10 Total Amount: 100 Shipping: 10"
from string "Service charges: 10 Grand Total: 100 Shipping: 10"
from string "Service charges: 10 Total Amount (Rs.): 100 Shipping: 10"

出力は100、上記のすべてのケースである必要があります。

4

3 に答える 3

1

私はあなたがこれを行うことができると思います:

/Total[^:]*:\s+([0-9]+)/i

説明:

  • Total「合計」で検索
  • [^:]*コロン「:」が見つかるまで、何かが続くか、何も続かない
  • :\s+コロンとそれに続く空白を読みます (+ の代わりに * を使用することもできます)
  • ([0-9]+)後で取得するために数値をグループに読み込む -> 100

使用している環境で大文字と小文字を区別しないことを示す方法がわかりませんが、通常、これは、i

ここに例としてのフィドルがあります

于 2013-05-12T17:15:24.817 に答える
0
# assuming you have all your files ready in an array
a = ["Service charges: 10 Total: 100 Shipping: 10",  "Service charges: 10 Total Amount: 100 Shipping: 10", "Service charges: 10 Grand Total: 100 Shipping: 10", "Service charges: 10 Total Amount (Rs.): 100 Shipping: 10"]
# we find every total with the following regexp
a.map {|s| s[/total[^\d]*(?<total>\d+)/i, 'total']}
#=> ["100", "100", "100", "100"]

正規表現は/total[^\d]*(?<total>\d*)/i. "total" という単語を検索し、数値が見つかるまで後続の文字を無視します (キャプチャ グループで返されます)。このiオプションにより、大文字と小文字が区別されなくなります。

于 2013-05-12T17:15:34.750 に答える