PHPでの正規表現


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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/23 13:00:42
  • 終了:--

回答(5件)

id:ke_ishi No.1

ke_ishi回答回数269ベストアンサー獲得回数02005/02/23 13:07:28

ポイント45pt

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

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

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

id:router

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

大変助かります。

2005/02/23 14:02:17
id:dev_zer0 No.2

dev_zer0回答回数332ベストアンサー獲得回数252005/02/23 13:11:41

ポイント5pt

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

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

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

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

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

「-」範囲指定

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

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

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

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

id:router

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

2005/02/23 14:03:26

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 tsekine 19 15 0 2005-02-23 13:16:15
2 bakaegg 11 8 0 2005-02-23 13:12:02
3 zigorou 31 23 0 2005-02-23 13:18:17

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません