[フレーム]
はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできます コメント表示の設定

ブックマークしました

ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

235users がブックマーク コメント 63

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

君たちは正規表現におけるインド数字の罠にハマったことはあるかい?(١٢٣٤٥٦٧٨٩) - Qiita

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

はてなブックマーク

はてなブックマークで
関心をシェアしよう

みんなの興味と感想が集まることで
新しい発見や、深堀りがもっと楽しく

ユーザー登録

アカウントをお持ちの方はログインページ

記事へのコメント63

  • 注目コメント
  • 新着コメント
maninthemiddle
これにマッチするなら漢数字にマッチしないのはおかしくね

その他
mattn
Python3 の正規表現の \d は UNICODE 文字なので各言語の数字(全角数字も含む)にマッチするという話。

その他
tbsmcd
漢数字は数を(も)表す漢字だから数字ではない、ということかな。日本語(やまとことば?)でいうと「ひ、ふ、み、よ」にマッチして良いのか、という。one, two とか。/ 百円と100円は互換だけど、四川は4川じゃない。

その他
ockeghem
\dなど定義済み文字クラスを使うと全角数字にもマッチする場合があるので[0-9]等と明示しましょう...という話は徳丸本にも出てきます(徳丸本は隅から隅まで読みましょう=宣伝)

その他
gogatsu26
「インドの数字に由来するのでインド数字と呼ばれるが、インドではなくアラブ諸国・アラビア語圏で使われる数字である」インド数字 - Wikipedia https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%89%E6%95%B0%E5%AD%97

その他
sgo2
昔漁ったWindowsのlocale情報一覧見たら数字の組が17種あったけど、鬼雲でも\dで全部マッチした(オプションで変更できる模様)。あとインド数字と呼ばれるけど実際使われているのは中東で、インドでは使われてない模様。

その他
amd64x64
\dを無闇に拡張しないでほしいね。あと、LOCALEで動作をかえるCRT関数もやめて。

その他
agricola
こういう多言語化の問題、某RDBMSのサポートやってたときに質問されたなぁ。「テーブル名を"四半期"って名前にしたらエラーになったんだが」→「四」は数字なので識別子の先頭には使えません、みたいなの。

その他
kazuau
JSだと仕様(ECMA-262)に"characters 0 through 9 inclusive"って定義されてるからこういう問題は生じない...はず / UnicodeのNumberの指定は\p{N}だそうだ

その他
uunfo
アラビア数字では?と思ったが、アラビア数字と言ったらアラビア語の数字١٢٣ではなく123の方になるのか.../文全体は右からだからハイフンの前後は右から、数字そのものは左から読むのね

その他
hevohevo
"アラビア系文字が右から左に読む文字体系であるのに数字列部分だけは左から右に読みます。"ひぇっ。なんでそんなややこしいことを

その他
KoshianX
ぐへえ、正規表現の `\d` はアラビア数字以外にも全角数字とかインド数字とかにもマッチしちゃうのか。`[0-9]` を使いましょうとな。こっわ

その他
deep_one
高機能すぎた(笑)

その他
shinagaki
10{6}天原サロメ

その他
matarillo
.netの正規表現の文字クラスもデフォはUnicodeだけど、オプションでES互換のASCIIベースにできる https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-options#ecmascript-matching-behavior 公式ドキュメント読むのだいじ

その他
Lumin
こういう思いつきクソ仕様ぶっ込んで自己顕示欲満たすのマジのガチでやめてほしいんだよな

その他
mikage014
"悪意のあるユーザが意図的に日付入力部分にインド数字を入れて送信し、システムへ不具合を起こさせる、といったことも考えられます。"

その他
n181DzTD
正規表現はライブラリにによって差が出ることが大きいから本当に基本的な書き方以外は使わないな

その他
petitbang
locale気を利かせすぎ問題か。

その他
terafuri
まーじか

その他
aox
文字の使用をやめましょう

その他
ockeghem
ockeghem \dなど定義済み文字クラスを使うと全角数字にもマッチする場合があるので[0-9]等と明示しましょう...という話は徳丸本にも出てきます(徳丸本は隅から隅まで読みましょう=宣伝)

2022年06月25日 リンク

その他
yuno001
知らなかった。が、なぜか昔から\dはほとんど使わない、

その他
rrringress
数とはなにかだ

その他
tengo1985
.NETもカルチャ(ロケール)依存で挙動変わってハマったことあるから、他の言語でも\dは使わないようになった。

その他
akrtak
気になって色々調べてしまった。JavaのInteger.valueOfもインド数字ちゃんとパースするらしい

その他
toaruR
面白い(ノ∀`) 使い所が減って逆に不便になるパターン

その他
tourism55
\dでひっかかる各言語数字・全角数字の一覧とかどっかにあるかな。

その他
knok
\sも全角空白にマッチするんだよなあ

その他
Wafer
ローマ数字、漢数字はヒットするのかしら

その他
remonoil
\d ではなく [0-9] を使おう

その他
sjn
参照先のUnicode一覧見ると「漢数字の "八" を括弧や丸で囲んだものも \p{N} でマッチするが、単なる "八" はマッチしない」、というか漢数字は一〜四だけは判定あるの...?なんだこれ...まぢもうむり...

その他
greenbow
↓文章全体は右から読むが、数字部分だけは左から読むということみたいですよ。ややこしや。

その他
t_motooka
ブコメ含めて良い話。自分は [0-9]+ 派だけども。

その他
kkobayashi
知らなかった。なんだその仕様

その他
Falky
定義済み文字クラス好きじゃないから必ず[0-9]で書くわ。言われてみると、正規表現覚えた時に危ないから極力やめろって教えられた気も...ていうか、だから好きじゃないんだっけ??そうかも?最近脳死で書いとるな...

その他
homarara
「右から読む」の部分、なんで打ち消し線入れてんの? 右から読むの? 読まないの? '٢٠٢٢-٠٦'の例、明らかに「06-2022」だよね? ハイフンは右から5文字目だよね? 右から読まないとマッチしないのでは?

その他
strawberryhunter
タイ語の数字とかもマッチするのかな。全角数字は?まあインド数字の罠じゃなくてPythonの罠だろ。JavaScriptではマッチしなかった。

その他
lli
なるほど

その他
zkq
多分一生ハマりそうにない罠

その他

注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

リンクを埋め込む

以下のコードをコピーしてサイトに埋め込むことができます

プレビュー
アプリのスクリーンショット
いまの話題をアプリでチェック!
  • バナー広告なし
  • ミュート機能あり
  • ダークモード搭載
アプリをダウンロード

関連記事

usersに達しました!

さんが1番目にブックマークした記事「君たちは正規表現...」が注目されています。

気持ちをシェアしよう

ツイートする

君たちは正規表現におけるインド数字の罠にハマったことはあるかい?(١٢٣٤٥٦٧٨٩) - Qiita

import re re.match(r'\d{4}-\d{2}', '٢٠٢٢-٠٦') Pythonで書いてはいますが、内容を補足します。「'٢٠٢٢... import re re.match(r'\d{4}-\d{2}', '٢٠٢٢-٠٦') Pythonで書いてはいますが、内容を補足します。「'٢٠٢٢-٠٦'」という文字列が、数字4文字+ハイフン+数字2文字にマッチするかどうか、という正規表現を書いています。 一見するとどう見ても数字4桁ではないので、正規表現にマッチしないように見えますよね???? 実は正規表現にマッチします!!!というのが今回の記事の内容になります。 そもそも正規表現における数字の扱いとは 今回はPythonの正規表現のライブラリを利用しているので、公式のリファレンスを見てみましょう。 該当の部分には以下のような記述があります。 \d Unicode (str) パターンでは: 任意の Unicode 10 進数字 (Unicode 文字カテゴリ [Nd]) にマッチします。これは [0-9] とその他多数の数字を

ブックマークしたユーザー

  • AmaiSaeta2024年12月04日 AmaiSaeta
  • mcddx302024年12月03日 mcddx30
  • hevohevo2024年12月03日 hevohevo
  • KoshianX2024年12月03日 KoshianX
  • summer4an2024年12月02日 summer4an
  • techtech05212023年03月08日 techtech0521
  • rikuo2022年07月28日 rikuo
  • lugecy2022年07月03日 lugecy
  • deep_one2022年06月27日 deep_one
  • mas-higa2022年06月27日 mas-higa
  • shinagaki2022年06月27日 shinagaki
  • mjtai2022年06月26日 mjtai
  • Akaza2022年06月26日 Akaza
  • k_wizard2022年06月26日 k_wizard
  • t_f_m2022年06月26日 t_f_m
  • matarillo2022年06月26日 matarillo
  • Lumin2022年06月25日 Lumin
  • dederon2022年06月25日 dederon
すべてのユーザーの
詳細を表示します

ブックマークしたすべてのユーザー

同じサイトの新着

同じサイトの新着をもっと読む

いま人気の記事

いま人気の記事をもっと読む

いま人気の記事 - テクノロジー

いま人気の記事 - テクノロジーをもっと読む

新着記事 - テクノロジー

新着記事 - テクノロジーをもっと読む

同時期にブックマークされた記事

いま人気の記事 - 企業メディア

企業メディアをもっと読む

はてなブックマーク

公式Twitter

はてなのサービス

Copyright © 2005-2025 Hatena. All Rights Reserved.
設定を変更しましたx

AltStyle によって変換されたページ (->オリジナル) /