Skip to main content
bizarre_n
Community Expert
Community Expert
October 5, 2021
Answered

正規表現での数字の表現について

  • October 5, 2021
  • 2 replies
  • 2459 views

ちょっと不可解なことがありましたのでお尋ねします。

1桁数字にマッチさせようとして、以下のように書きました。

(?<![,-9ー])[0-9](?![,-9ー])

ところがこれではマッチせず、

(?<![,-9ー])\d(?![,-9ー])

だとマッチするのです。

 

理由がどうしてもわからないので、どなたかお分かりになる方いらっしゃるでしょうか。

MacOS10.15.7

CC2020

で作業しております。

    This topic has been closed for replies.
    Correct answer ajabon grinsmith

    ごく単純なところから確認しますが、

    マッチ対象の数字が半角数字以外である可能性は?

    極端な例でいえば、全角数字+プロポーショナル字形であるとか…

    マッチした文字コードは情報パネル上で0x30〜0x39として見えてるでしょうか?

    2 replies

    bizarre_n
    Community Expert
    bizarre_nCommunity ExpertAuthor
    Community Expert
    October 5, 2021

    補足しておきますと、数字の前後を[,-9ー]以外の文字が来た時でマッチさせる(否定先読みと否定後読み)と考えたのですが、肝心の数字部分を[0-9]にしたときにマッチせず、\dにしたときにマッチするのです。

    何か超基本的なところを間違っているのでは?と思い投稿した次第です。

    ajabon grinsmith
    Community Expert
    ajabon grinsmithCommunity ExpertCorrect answer
    Community Expert
    October 5, 2021

    ごく単純なところから確認しますが、

    マッチ対象の数字が半角数字以外である可能性は?

    極端な例でいえば、全角数字+プロポーショナル字形であるとか…

    マッチした文字コードは情報パネル上で0x30〜0x39として見えてるでしょうか?

    bizarre_n
    Community Expert
    bizarre_nCommunity ExpertAuthor
    Community Expert
    October 5, 2021

    確認しました!

    バッチリです!

    テキスト中の数字が全部半角だと信じておりましたが、[0-9]でマッチしなかったのは全角数字でした。

    謎が解けました。ありがとうございます。

    ajabon grinsmith
    Community Expert
    Community Expert
    October 5, 2021

    よかったです! 書体や文字組みによっては見た目で区別つきにくいことも多いですね。

    自分でもたまにやらかしますw