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

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

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

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

Q&A

解決済

2回答

859閲覧

正規表現の記述法(PHP)

tenpu

総合スコア40

正規表現

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

0グッド

0クリップ

投稿2018/01/29 12:15

編集2018/01/29 13:09

PHP5.6系です。
正規表現で、ある文字列A中に特定の文字列Xが含まれていることをpattern記述して判断しているのですが、
これは基本にして、追加patternでこの文字列の中に、別の文字列Yがある場合も、1つのpatternで判定したいです。

具体的には、下記の通りです。

文字列X: "hogehoge- (任意-) xxx.csv "
文字列Y: "hogehoge- (任意-) xxx.yz.csv "

文字列A

  1. "hogehoge-aaa-123" -> 検出なし
  2. "hogehoge-xxx.csv" -> 検出
  3. "hogehoge-xxx.yy.csv" -> 検出なし
  4. "hogehoge-xxx.yz.csv" -> 検出

何かうまい記述方法はあればご教授ください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

多分追加条件が必要ですが、今の条件だけみればこうです

PHP

1$pattern="/^hogehoge-(.*?-)*xxx.(yz.)?csv$/"; 2 3$str="hogehoge-aaa-123"; 4print (preg_match($pattern,$str)?"OK":"NG")."<br>"; 5$str="hogehoge-xxx.csv"; 6print (preg_match($pattern,$str)?"OK":"NG")."<br>"; 7$str="hogehoge-xxx.yy.csv"; 8print (preg_match($pattern,$str)?"OK":"NG")."<br>"; 9$str="hogehoge-xxx.yz.csv"; 10print (preg_match($pattern,$str)?"OK":"NG")."<br>"; 11$str="hogehoge-aaa-xxx.csv"; 12print (preg_match($pattern,$str)?"OK":"NG")."<br>"; 13$str="hogehoge-bbb-xxx.yz.csv"; 14print (preg_match($pattern,$str)?"OK":"NG")."<br>"; 15$str="hogehoge-ccc-xxx.y.csv"; 16print (preg_match($pattern,$str)?"OK":"NG")."<br>";

投稿2018/01/29 13:34

yambejp

総合スコア114769

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

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

tenpu

2018/01/30 01:41

頂いたご提案参考にさせて頂きました。ありがとうございます。
guest

0

.yz の出現を、0回か1回としてあげると良いです。

投稿2018/01/29 12:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tenpu

2018/01/29 13:25 編集

ありがとうございます。任意の特定文字列のくくり方がわからないのですが、下記のような感じでしょうか? 「(固定文字列)?」としました。 "/^hogehoge" . "(-.*)?-xxx" . "(.yz)?.csv$/"
退会済みユーザー

退会済みユーザー

2018/01/29 13:31

正規表現の基礎が学べてないようですね。 まずは基本的な書き方を学んでください。 0or1回の理解は正しく出来ています。 正規表現の確認はツールを使うとイイです。 https://regex101.com/
tenpu

2018/01/30 01:39

有用なツール紹介ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問