ある、複数行の文章内に散在する
最低4桁以上の金額を全て抽出するには?
例えば
\####
\####-
####円
と、それぞれ3桁を「,」で区切った数値を金額とみなす場合
1度のパターンマッチで、
上記3つのバリエーションとカンマ付き全種の
不純物が入らない厳密なパターンを記すことは、できますでしょうか?
追記、
以下のような場合は金額とみなしません。
####(金額に関する記号が前後に付かないため)
####-(頭に\が足りないマイナス単独なため)
###(3桁しかないため)
# ###(数値の間の区切りがカンマ以外のため)
No.2
- 回答日時:
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
# for over 4 digits
my $digit = qr{\d(?:\d){3,}};
my $digit_with_comma = qr{\d{1,3}(?:,(?:\d){3})+};
my $regex1 = qr{\\${digit}-{0,1}};
my $regex2 = qr{\\${digit_with_comma}-{0,1}};
my $regex3 = qr{${digit}円};
my $regex4 = qr{${digit_with_comma}円};
my $text = do {local $/ = undef; <DATA>};
my @prices = ($text =~ m/$regex1|$regex2|$regex3|$regex4/g);
binmode STDOUT, ":encoding(utf8)";
print $_, $/ for @prices;
__DATA__
-- normal pattern1
\1234
\12345
\123456
\1234567
\1,234
\12,345
\123,456
\1,234,567
-- normal pattern2
\1234-
\12345-
\123456-
\1234567-
\1,234-
\12,345-
\123,456-
\1,234,567-
-- normal pattern3
1234円
12345円
123456円
1234567円
1,234円
12,345円
123,456円
1,234,567円
-- error pattern1
\123
\123-
123円
-- error pattern2
1234
1234-
1234yen
1,234
1,234-
1,234yen
-- error pattern3
1 234
1 234-
1 234円
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 数字にカンマを入れる方法 2 2022/04/12 11:52
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- 交際費・娯楽費 年収520万円一人暮らしの貯金 7 2022/09/26 07:10
- 固定資産税・不動産取得税 中古マンションの土地・建物割合について 1 2022/06/02 15:06
- 弁護士・行政書士・司法書士・社会保険労務士 売買契約とそれに付随する公正証書の記載について 2 2023/08/23 14:30
- アルバイト・パート 有給休暇の賃金 就業規則の記載 3 2023/02/16 21:29
- 確定申告 個人の確定申告。「医療費のお知らせ」記載内容と医療費控除の明細書【内訳書】に記入する内容の関係 4 2023/03/04 18:41
- 猫 シニア猫の手術保険について 1 2022/09/06 21:10
- 副業・複業 副業 クラウドワークスについて 1 2023/01/17 09:13
- 国民年金・基礎年金 年金の受給額の計算について 1 2023/07/10 18:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Tinderのマッチングアプリ辞め...
-
正規表現
-
正規表現の ^
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
VBA EXCEL あるセルの中の一...
-
EXCELからCSVにすると余計なカ...
-
「何とかで始まり、何とかで終...
-
VBA 置換文字がみつからない時
-
文字コードの%E3%80%とは何です...
-
マクロを使ってフォルダー内に...
-
csvデータ ダブルクォーテ...
-
COBOLでの全角文字の判定をした...
-
住宅にカナを入力する際に丁目...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
[VBA][Excel]クリップボードか...
-
IEからEdgeへの移行に伴うIMEの...
-
スペースで区切られた氏名から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現 URL抽出「 [\\/\\b]{0...
-
シェルスクリプト [[ $number =...
-
正規表現について VB6
-
正規表現について
-
日本語環境下でのバックスラッ...
-
正規表現で2種類ある括弧を区別...
-
perlの正規表現で量指定子を繰...
-
perl初心者です。
-
言語ではなく、正規表現のみで...
-
正規表現の展開
-
正規表現
-
正規表現について教えてください
-
正規表現が解読できません。
-
pythonの正規表現、全角カタカ...
-
行末の正規表現について。
-
正規表現。行頭が○○以外にマッ...
-
配列内の要素をパターンマッチする
-
置き換えについて
-
【GVimの正規表現における検索...
-
「?」が含まれるマッチについて
おすすめ情報