人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの正規表現

「preg_match(”/[^¥w¥d¥-¥.]/”, ”対象文字列”])」

を使ったサンプルを見ています。「^が否定」「¥wが[_0-9a-zA-Z]」「¥dが[0-9]」までは分かるのですが、「¥-」と「¥.」の意味と必要性、「¥w」があるのに「¥d」もある理由がわからない状態です。PHPやPerlの正規表現リファレンスや解説サイトは見て回りましたが、あまり細かく書いてありませんでした。解説サイトなどの紹介の場合は、上記疑問点が、書いてあるサイトをお願いします。

これは特定の文字を使ったファイル名を拒否するためのサンプルの1部です。

●質問者: router
●カテゴリ:コンピュータ
✍キーワード:Perl PHP サイト ファイル リファレンス
○ 状態 :終了
└ 回答数 : 2/5件

▽最新の回答へ

1 ● ke_ishi
●45ポイント

http://www5a.biglobe.ne.jp/~n_rieko/perl/8.htm

アンダスコア、数字、アルファベット、ハイフン、ピリオド以外の文字を使ってはいけない、というつもりでしょう。

¥w¥dは、単に勘違いでしょう。あなたの思っているとおり、¥wだけで大丈夫です。

ハイフンとピリオドはメタキャラとして使う場合があるので¥でエスケープしているのでしょう。[]内ではピリオドへのエスケープは必要なかったと思いますが

◎質問者からの返答

ご回答ありがとうございます。

大変助かります。


2 ● dev_zer0
●5ポイント

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

PHP 基礎編9 - 正規表現、マッチ、置き換え、ereg、eregi、eregi_replace - SAK Streets

> 「¥-」と「¥.」の意味と必要性

先頭文字に「-」「.」の文字列があるのを拒否したいからだと思います。

ただの「-」「.」だと正規表現ではそれぞれ

「-」範囲指定

「.」改行を除く任意の 1 文字

という別の意味になってしまう為に¥でエスケープしています

> 「¥w」があるのに「¥d」もある理由がわからない

こっちは私もわかりません

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ