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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

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

Q&A

解決済

3回答

583閲覧

PHPでの正規表現について

fukuma

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

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

0グッド

0クリップ

投稿2020/07/06 07:39

PHPの正規表現で特定の文字列の後の数字を抜き出そうとしています。
[通常]100[異常]500

正規表現について知識が少なく色々試してはいるのですが、以下のようなコードではマッチすらせず、わかる方がいらっしゃれば教えていただけないでしょうか。

PHP

1preg_match('/[通常][0-9*]/', $str, $match);

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

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

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

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

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

guest

回答3

0

今回だと、/(?<=[通常])\d+/といった正規表現パターンを思いつくには、

  • 直前にパターンがある位置を(?<=パターン)で指定できること
  • 正規表現の[]は特殊な意味(文字クラスの指定)を持つこと
  • []自身を表現するには[]と書かなければいけないこと
  • 0~9の数字1文字は[0-9]あるいは\dで表現できる
  • 直前のパターンの1回以上の繰り返しは+で表現できること

あたりの知識が必要です。

ある程度、基本的な知識を得たうえで、実際の環境よりも簡単にテストできる場所( regex101.com など)で試してみるといいかと思います。

投稿2020/07/06 08:01

編集2020/07/06 08:02
Daregada

総合スコア11990

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

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

fukuma

2020/07/06 08:03

ありがとうございます。今回は急ぎだったので聞いてしまいましたが、基礎から勉強してみます。
guest

0

基本から学習すると良いですよ。
php の公式サイトにドキュメントが用意されています。

PCRE 正規表現構文

また、こちらでデバッグすると理解が進みます。

https://regex101.com/

投稿2020/07/06 07:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

fukuma

2020/07/06 07:55

ありがとうございます。基礎がわかっていないので勉強してみようと思います。
guest

0

ベストアンサー

[通常]は「通」か「常」かですね
[0-9*]だと、0-9か「*」か?という意味です

PHP

1$str="[通常]100[異常]500"; 2preg_match('/(?<=[通常])[0-9]+/', $str, $match); 3print_r($match);

投稿2020/07/06 07:43

yambejp

総合スコア114829

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

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

yambejp

2020/07/06 07:46 編集

質問者さんのパターンだとこういうのがヒットします $str="通*100[異常]500"; preg_match('/[通常][0-9*]/u', $str, $match); print_r($match);
fukuma

2020/07/06 07:55

ご回答いただきありがとうございます! 無事マッチさせることができましたが、基礎がわかっていなかったので勉強してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問