質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

1462閲覧

正規表現で文字列から数値を取り出したい

date-07

総合スコア13

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

1クリップ

投稿2018/02/12 05:24

1〜99までの数値に一致するものを取り出したいのですが、
1,5
5
10
2,11
このように、文字列でカンマ区切りに2つの数値があることがあります。
このときに、一桁の数値を取り出したいのですが、1を含むものを取り出すと11や21などが取れてしまいます。
なので、1のもの、1で始まり次がカンマのもの、カンマの次が1、3パターンで一致するものを調べていたのですが、これを1文で取り出す正規表現を教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2018/02/12 05:30

使用する言語は何でしょうか。
date-07

2018/02/12 05:32

すみません。sqlのwhere句の中で使っています。
jun68ykt

2018/02/12 06:27 編集

ご質問の1行目に、「1〜99までの数値に一致するものを取り出したいのですが、」とありますが、後のほうで「一桁の数値を取り出したいのですが、」とあるので、ご質問の1行目は「1〜9までの数値に一致するものを取り出したいのですが、」が正しいということでよいですか?
jun68ykt

2018/02/12 07:10

立て続けの質問ですみません。SQLの正規表現で、マッチした部分をキャプチャする関数は、OracleだとREGEXP_SUBSTRという関数がありますが、 MySQL だとこれが無いので、https://stackoverflow.com/questions/2742650/what-is-the-equivalent-of-regexp-substr-in-mysql の回答に出ているようなことをやらなければならずけっこう大変そうです。なので、データベースは何を使っているかもご質問に付記したほうがよいかと思います。
guest

回答2

0

ベストアンサー

「取り出す」というところをどういうふうに解釈するかによってやり方は変わるでしょう。
シェル芸的に1桁の数字をgrepなりで標準出力にだすということであれば、コンマを改行に変換してからgrepするんでしょうかね。
データが/tmp/hogeにあるとして、

$ sed -e 's/,/\n/g' /tmp/mm | grep -P '^\d$'

投稿2018/02/15 02:08

rogueref

総合スコア727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

date-07

2018/02/20 16:59

ありがとうございます。 解決しました!
guest

0

SQLでの処理であればカンマ区切りの文字列ではなく
数値として複数行でもつのが一般的ですし、検索効率もあがります

あとは他の回答者の追記依頼にあるとおりSQLの種類によって
検索の仕方が違うのでそれを具体的なSQL名を提示して下さい

投稿2018/02/13 07:38

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問