正規表現で連続した数字を表現したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
march3
記事: 7
登録日時: 5年前

正規表現で連続した数字を表現したい

#1

投稿記事 by march3 » 5年前

お世話になります。

正規表現で0以上9以下の同じ数字が4連続するものを表現したい場合、愚直に

0000|1111|2222|3333|4444|5555|6666|7777|8888|9999

とすればできますが、格好悪いのでよりスマートな書き方がないか探しています。

0{4}|1{4}|2{4}|3{4}|4{4}|5{4}|6{4}|7{4}|8{4}|9{4}

より綺麗な書き方ってできないものでしょうか。

思いついた方は返信ください。
よろしくお願いいたします。

アバター
a5ua
記事: 199
登録日時: 9年前

Re: 正規表現で連続した数字を表現したい

#2

投稿記事 by a5ua » 5年前

コード:

(\d)\1{3}
はいかがでしょうか?

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 正規表現で連続した数字を表現したい

#3

投稿記事 by YuO » 5年前

一応,.NET Frameworkのように,\dをUnicodeクラスNdと等価とするライブラリもあるため,注意が必要です。
このあたりは,ライブラリの仕様に依存します。
そもそもキャプチャ機能の有無,量指定子の有無がライブラリに依存しますが……。

ref) ideoneでの実行例 全角・半角形領域の数字に関しても\dがマッチしていることがわかる

march3
記事: 7
登録日時: 5年前

Re: 正規表現で連続した数字を表現したい

#4

投稿記事 by march3 » 5年前

a5ua さんが書きました:

コード:

(\d)\1{3}
はいかがでしょうか?
「後方参照」という便利なものがあるんですね。
多分これが一番スマートな気がします。
YuO さんが書きました:一応,.NET Frameworkのように,\dをUnicodeクラスNdと等価とするライブラリもあるため,注意が必要です。
このあたりは,ライブラリの仕様に依存します。
たしかに、ライブラリに限らず、正規表現を使えるツールでも同じ記述でもヒットしたりしなかったりしてハマることがありますね。
サクラエディタだと[^[0-9]]でもヒットしたけど
javascriptのsearchでは [^0-9] でないとヒットしない、とか。。。

閉鎖

“C言語何でも質問掲示板” へ戻る