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

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

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

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

Q&A

解決済

4回答

1071閲覧

正規表現による文字列判定の方法

ay_dew

総合スコア11

正規表現

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

0グッド

0クリップ

投稿2017/10/13 06:30

初歩的な質問で申し訳ないのですが…

text_〇
top_〇
bottom_〇
(〇は半角数字)

という文字列で、〇が3以外の場合にtrueを返すような
正規表現を書きたいと思っています。

正規表現については初心者です。
宜しくお願いいたします。

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

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

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

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

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

guest

回答4

0

ベストアンサー

^(text_|top_|bottom_)[^3]$
まとめてやるとしたらこんな感じでしょうか

↓WEB上で正規表現のデバッグができるサイト
https://regex101.com/r/AhTF1z/1

投稿2017/10/13 08:07

Tsuzaki

総合スコア21

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

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

ay_dew

2017/10/16 05:10

これを〇の部分が桁数に関係なく数字が入る場合(text_15など)にも判定できるようにすることはできますでしょうか。
Tsuzaki

2017/10/16 05:28 編集

ちょっと合ってるかわかりませんが、これでどうでしょうか。 ^(text_|top_|bottom_)(?!3$)\d+$ ↓WEB上で正規表現のデバッグができるサイト https://regex101.com/r/AhTF1z/2 解説 ^:行頭 (text_|top_|bottom_):文字列orで連結 (?!3$):「3」一文字でない($は行末を表す)。?!は否定的先読みというらしいです。  http://uxmilk.jp/50674 \d+$:数字の1文字以上の繰り返し。 \dが数字 +が一文字以上の繰り返し $が行末 否定的先読みは私もよく理解してませんが、動きました。 自己責任で参考にして下さい。 補足 ・WEB上で正規表現のデバッグができるサイトでは各言語のサンプルコードを出力できるので プログラムに組み込むときの参考にしてください。 ・この正規表現は、改行の入った一つの文字列から抽出することを前提として作っており、 gとmというフラグを付けています。gがついてると複数のマッチを検出できます。 mは複数行のマッチをサポートするフラグです。
Tsuzaki

2017/10/16 05:41 編集

> 〇が3以外の場合にtrueを返すような > 正規表現を書きたいと思っています。 Javascriptだとこんな感じでしょうか ```` var regex = /^(text_|top_|bottom_)(?!3$)\d+$/; var str = `text_3`; var m = regex.exec(str); if (m !== null) { console.log("true!"); } else { console.log("false"); } ````
ay_dew

2017/10/17 05:59

ありがとうございます。 これで実現できそうです。
guest

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

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

ay_dew

2017/10/17 06:02

参考にさせていただきます。
guest

0

下記ではいかがでしょうか。

text_[^3] top_[^3] bottom_[^3]

半角数字だけに絞りたい場合はこうでしょうか。

text_[012456789] top_[012456789] bottom_[012456789] text_[0-24-9] top_[0-24-9] bottom_[0-24-9]

投稿2017/10/13 06:32

編集2017/10/13 06:37
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ay_dew

2017/10/17 06:02

ありがとうございます。
guest

0

ptn = 3;
select str, ptn,
case when REGEXP_LIKE(str, ptn, 'i') then 'Not'
else 'ok' end 列名
from 表の名前;

投稿2017/10/13 06:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ay_dew

2017/10/17 06:00

これは、SQL的な書き方なのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問