正規表現でマッチした文字の直前の数字を取得

このQ&Aのポイント
  • 正規表現を用いて文字列の後ろから最初にマッチングした特定の文字より前にある最初の数字を取得する方法について質問します。
  • 例えば、合計金額の前にある数字を取得したい場合、どのような効果的な方法がありますか?数量の部分は1桁でないことや、数量という表記ではないことも考慮する必要があります。
  • 回答があれば、具体的な方法や手順について教えてください。
回答を見る
  • ベストアンサー

正規表現でマッチした文字の直前の数字を取得

正規表現を用いて文字列の後ろから最初にマッチングした特定の文字より前にある最初の数字をとってくる方法がわからず、質問させて頂きました。 合計金額という文字の前にある数字をとってきたいのですが、何かいい方法はないでしょうか? 例)ああ22 合計金額5000円 あああああああwでふぁわw 数量2 合計金額10000円 ↑の場合ですと2がとってきたいということになります。 例)いいいい1 合計金額5000円 いどぁ 数量15 合計金額10000円 ↑の場合でいくと15がとってきたいということになります。 数量のところは1桁とは限りません。 又数量という文字かどうかも限りません。 台数の場合や枚数の場合や色々なパターンがあります。 何かいい方法がありましたらご回答よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5085/13290)
回答No.2

ごめんなさい書きかけで投稿しちゃいました。 $str = 'ああ22 合計金額5000円 あああああああwでふぁわw 数量2 合計金額10000円'; preg_match_all('/([0-9]+)\s合計金額/', $str, $matches); $last_matche = array_shift(array_reverse($matches[1])); echo $last_matche;

yleaf2112
質問者

お礼

ありがとうございました。 活用してみます!

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5085/13290)
回答No.1

$str = 'ああ22 合計金額5000円 あああああああwでふぁわw 数量2 合計金額10000円'; preg_match('/([0-9]+)\s合計金額/', $str, $matches); echo $matches[1];

関連するQ&A

  • 同一セル内に数字・文字がある場合の計算式

    同一セル内に数字・文字がある場合の計算式 エクセルにおける表計算で困っています。 表計算をする場合、通常はセル内に数字のみを入力し合計値を求めてました。 例:100+100 合計200 しかし、同一セル内に文字が入ってきた場合は、合計値を求めても計算ができません。 例:100円+100円 合計0 セル数が少なければ電卓でも出来ますが、多い場合や平均値を求める場合に効率が悪くなります。 セル内の文字を読み取ることなく、数字データだけ読み取る方法はありますか?

  • 正規表現

    正規表現で次の文字列を認識する方法を教えてください 1. (000) (999) ()でくくられている3桁の数字。カッコを含みます 3桁の数字文字列だけなら'[0-9][0-9][0-9]' ?? 2. [あああ] (あああ) いあああ+ rあああ> 文字列'あああ'の前後の任意の文字、半角、全角両方OKを含む5文字 文字列がカッコの場合もあり

  • 正規表現の使い方をお教えください

    サクラエディター使っていますが・・・。  例・正規表現である文字が行の二か所以上あるとき最初に出てくる文字より・ この場合「文字」が二か所ありますが先に出てきた「文字」より前を削除したいのですが 後の方の「文字」より前側削除なってしまいますがどのようにすればよいのかお教えください。   宜しくお願いします。

  • 特定の数字と文字が一つのセルに入っています。。関数

    特定の数字(品番)と文字(小、大、特大)が一つのセルに入っています。 例 品名       売り上げ   1        100   2P       200   98小       10   2         20   100特大    30   100       10        P         15   特大        25 1    (1を含む物のセルの数)   (その売上合計) 2    (2を含む物のセルの数)   (その売上合計)  98   (98を含む物のセルの数)  (その売上合計)  100  (100を含む物のセルの数) (その売上合計)  文字のみ (P・特大・小など、数字を含まないセルの数)(その売上合計) この式(関数)をおしえてください。この場合、 1    1   100 2    2   220 98   1    10 100  2    40 文字のみ 2    40 となるようにしたいのです。 つまり、A列に入った数字を含む文字・・この表記方法?がわからないのです。 説明が足りなければ補足いたしますので、どうかよろしくお願いします。 カウント・イフ、サム・イフ程度しかわかりませんので、ご配慮ください。   

  • 数字と文字列から数字のみ取り出したい

    下記のような数字と文字の組み合わさった文字列から数字のみを取り出したいのですが、 基準となる文字もなく、数字の桁、文字数もバラバラで、さらに文字部分にも数字が 入っていて調べた数式が使えず困っています。 (例1)109778大倉山マンション第3⇒109778 を取り出したい (例2)13482マックハイム綱島第10 ⇒ 13482 を取り出したい (例3)12896ハイム大倉山⇒12896 を取り出したい (例4)1198藤和シティコープ大倉山太尾町A棟⇒1198を取り出したい 調べた数式=LEFT(A1,LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},)))) 上記の数式だと(例1)(例2)の場合、建物名の数値を反映してしまい数値のみ取り出せません。 数値部分はみたところ4~6桁でした。 何か良い数式がありましたら、ご教授願います。

  • Perl 正規表現などを使って文字を分割したい

    Perlを使って、下記データを分割したのですがうまくできません。 多分、正規表現などを使うとできそうな気がするのですが、分かりませんでした。 1つだけでも大歓迎ですので、できる方、教えてください。 特に、最初の2つだけでもできればとても、助かります!! 何卒、宜しくお願い致します。 ちなみに、文字コードは、UTF-8です。 分けたい組み合わせ(文字数が変わってもある程度汎用性があると助かります) ======== 漢字+数字 英字+カタカナ 漢字+数字+英字+カタカナ 例: ======== 表現100 Abcテレビ 非営利99AbcFFテレビ 日本語テキスト 出来上がり例: ======== 表現 100 ABC テレビ 非営利 99 AbcFF テレビ 日本語 テキスト

    • ベストアンサー
    • Perl
  • 本当に分からないので教えてください4

    問題6 金額と枚数を入力する. 硬貨,紙幣の合計が入力金額,合計枚数が入力枚数になる 場合を1つ見つけるプログラムを作成せよ. 使える硬貨,紙幣は 一万円,五千円,千円,五百円,百円,五十円,十円,五円,一円 とする. また,各硬貨,紙幣の枚数が求められたら,合計枚数と合計金額が 間違いないか確かめを行うプログラムを追加し,結果を表示せよ. <実行結果> 金額:1234 枚数:999 10000 : 0 5000 : 0 1000 : 0 500 : 0 100 : 0 50 : 0 10 : 0 5 : 55 1 : 944 金額 : 1219 枚数 : 999 <実行結果> 金額:1234567890 枚数:99999 存在しない <実行例3> 金額:1234567890 枚数:999999 10000 : 123357 5000 : 11 1000 : 2 500 : 21 100 : 3 50 : 601 10 : 4 5 : 6000 1 : 870000 金額 : 1234567890 枚数 : 999999

  • 正規表現-数字

    VB6で開発しています。 ひとつのテキストボックスがあり(MAXLENGTHが4)、 半角数字or小数点しか入力できないように制御しています。 下記正規表現確認関数で、 00.0~99.9の値のみ認証したいのですが、 (チェック前に Format( XX , '00.0')に変換してます) ○ 3 ○ 3.3 ○ 33 ○ 33.3 × 3.33 × .333 × 333 △ 3.00 → 3.0に変換させる パターンマッチング (\d{1,2}.\d|\d{1,2})ですと 本来×の333がOKとなってしまいます。 正規表現が間違っているのでしょうか? アドバイスお願いします。 関数はこちら Public Function RegExpCheck(ByVal ChkString As String, _ ByVal RegPattern As String) As Boolean '(一部省略) '引数:ChkString 正規表現確認対象文字 ' RegPattern パターン '戻り値:True マッチしている ' :False マッチしていない、あるいは文字・パターンが空白 '(一部省略) Dim reg As New RegExp RegExpCheck = False On Error GoTo RegErr '引数空白チェック・・・空白の場合はFalseを返す '対象文字列 If Trim$(ChkString) = vbNullString Then Exit Function End If 'パターン If Trim$(RegPattern) = vbNullString Then Exit Function End If reg.Pattern = RegPattern If reg.Test(CStr(ChkString)) = True Then RegExpCheck = True End If Exit Function RegErr:

  • 同じ文字が続くときに数字を合計する関数

    A列に同じ文字が続くときに、該当するB列の数字を合計する関数をご教示お願い致します。 (例ではB4、B8、B9の合計で600)

  • 正規表現で、半角大文字と半角数字,ハイフン許可

    PHPを使った正規表現で困っています。 /^(\w|(?!-{2,})-)+$/ ・半角大文字(A~Z)、数字(0~9)とハイフン(-)のみ許可. ・先頭にハイフン(-)が利用できない. ・ハイフンは2回連続で利用できない.例) -- に対応したいと思っていますが、いろいろやってみましたが上記の方法で上手くいきません。

    • ベストアンサー
    • PHP