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

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

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

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

Q&A

解決済

2回答

2136閲覧

[正規表現]文章を区切って、それぞれの区切りごとに正規表現チェックをする構文2

pgm_bakabon

総合スコア61

正規表現

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

0グッド

0クリップ

投稿2018/12/25 04:00

お世話になります。
正規表現についてご相談させてください。

先日、こちらで質問させていただきましたが、要件を詰め直したため改めて質問させていただきます。
https://teratail.com/questions/165649

やろうとしていること

①文章があり、その文章を区切り文字で区切ります。
②その区切った単位で、該当する語句にマッチするかの正規表現チェックを行いたい。
③②では複数の語句にマッチするかを見て、判定結果を導き出したい。

解決したいこと(相談内容)

文章を区切るのと、複数の語句にマッチするかの正規表現チェックを一つの正規表現の構文で行いたいです。
その書き方で詰まっています。
①その書き方をご教示いただきたいです。
②もし一つの正規表現でできない場合は、以下の観点でどこまで正規表現でできるかご教示いただきたいです。
例えば
「文章を区切るのと、複数ではないが1つの語句にマッチする正規表現は1つの構文で可能」
「文章を区切るのはプログラム、複数の語句にマッチするかは正規表現、複数の語句にマッチした結果の判定はプログラム、ならできます」
などです。

条件含め、以下に区切り文字で区切りたい文章と、マッチさせたい語句を記述します。

文章
取りに来ていただける方のみ、ご購入をお待ちしております! 取りに来ていただけるのであれば、直接受け渡しが可能です。 よろしくお願いいたします。
マッチさせたい語句

部分一致です。
ただし、マッチさせたい語句を一つの正規表現にまとめずにが条件としてあります。

ワード1: 取りに来て
正規表現: /^(?=.取りに来て).$/
ワード2: 受け渡し
正規表現: /^(?=.受け渡し).$/

文章を区切り文字で区切る

区切り文字: 「。」 or 「¥n(改行)」
前出の文章を区切り文字で区切った場合、①〜③の対象に切り分けられる。
この①〜③に分ける+それぞれに対し正規表現で該当した文字が入っているかのチェックを1つの構文でチェックをしたい。

①取りに来ていただける方のみ、ご購入をお待ちしております! ②取りに来ていただけるのであれば、直接受け渡しも可能です。 ③よろしくお願いいたします。
期待結果

このサンプルで言うと、
①は、「ワード1: 取りに来て」のみ該当するため → 偽
②は、「ワード1: 取りに来て」、「ワード2: 受け渡し」の両方が該当するため → 真
③は、ワードに該当しないため → 偽

この①〜③を受けて、真と判定したい。
(真と判定できる区切られた文章が一つでもあれば真)

言語

なし
(マーケターの部署で使うため)

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

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

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

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

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

guest

回答2

0

ベストアンサー

正規表現にもいくつか方言があり、それぞれサポートしている機能に違いがあります。言語によってどの方言に対応するかが違うので、どの言語で使うのかを明示されない限り厳密にできる出来ないを言うことは困難です。

正規表現が対応するのはマッチングだけです。対象文字列を分割したり「真偽の判断」したりするのはプログラム言語側の式とか関数で対応するもので、正規表現で対応すべきことではありません。「複数の語句にマッチするかの正規表現チェックを一つの正規表現の構文で行いたい」という方向性を考え直したほうがいいと思われます。

投稿2018/12/25 04:20

KojiDoi

総合スコア13671

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

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

pgm_bakabon

2018/12/25 09:01

ご回答ありがとうございます。 正規表現はワードのマッチしたかのみしかチェックできないのですね。 プログラムのように色々書けると思ったのですが認識が改まりました。 要件をあげていただいたマーケターの方には、プログラムと正規表現の両方で行わないと要件を満たせないと伝えます。 大変勉強になりました。
guest

0

前回の質問と何も変わっていないです。
なので、回答も同じです。

正規表現でマッチした結果をどう得るかは、正規表現の範囲外で、プログラミング言語やツールの機能です。

なので、

この①〜③に分ける+それぞれに対し正規表現で該当した文字が入っているかのチェックを1つの構文でチェックをしたい。

というのが意味をなさない文になっています。

投稿2018/12/25 04:30

otn

総合スコア84555

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

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

pgm_bakabon

2018/12/25 08:59

ご回答ありがとうございます。 今回の要件は正規表現のみではできない。 プログラムと合わせて実現する必要があると伝えます。 正規表現はワードのマッチしたかのみということを知れたので、大変勉強になりました。 (正規表現から逃げていたのでツケが回ってますね。。。) 私の未熟な質問に2度も回答いただき大変感謝です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問