ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:miya_HN .htaccessの正規表現
困り度:
  • 困っています
.htaccessの正規表現で質問があります。
<Files ~ "\.(html|gif|jpeg|png)$">

例えばこのような場合最後のファイル名が「html」「gif」「jpeg」「png」に適用されますが、~(チルダ)はパターンマッチ、(||)(カッコとパイプライン)はパイプラインで区切ってそのいずれか、$(ドルマーク)は行末のマッチングと分かったのですが、\.(円マークとドット)が分かりません。どういう意味なんでしょうか?
例えば、次のように記述すると間違いなんでしょうか?

<Files ~ "(html|gif|jpeg|png)$">

また、

<Files password.html>

このような記述が載っていたのですが、ファイル名がこのような場合ダブルクォーテーション(")で囲まなくていいのでしょうか?

また、*(アスタリスク)と?(クエスチョンマーク)は必ず1文字以上でなければいけないのでしょうか?0文字ではダメなんでしょうか?

回答よろしくお願いします。
質問投稿日時:08/03/25 06:58
質問番号:3892571
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:auty > \.(円マークとドット)が分かりません。どういう意味なんでしょうか?

\はエスケープ文字といいます。次に来る記号に正規表現としての特別の意味を持たせないで、その記号の表す文字そのものを意味します。

.は、直前に\が付いているので、文字ドットそのものを表します。

\.で、文字ドットそのものです。この場合は、ファイル拡張子のドットを表現しています。

正規表現をあらわすための記号そのものを、パターンの中で普通の文字として使いたいときの事を考えると良くわかると思います。

> 次のように記述すると間違いなんでしょうか? <Files ~ "(html|gif|jpeg|png)$">

次のファイルもマッチします。(htmlが必ずしも拡張子となっていない可能性があります。)
abc.xyzhtml abcxyzhtml

> <Files password.html>

一つの場合は、OKです。

------------------------------------------------------------
*(アスタリスク)は、0文字以上の任意の文字列
?(クエスチョンマーク))は、任意の1文字
------------------------------------------------------------

にマッチします。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/03/25 07:49
回答番号:No.1
この回答へのお礼\というのはドット(.)の文字そのものを表すためにその文字の前に配置するものなんですね。
「password.html」は一つの場合のみダブルクォーテーション(")で囲まなくてすむんですね。
*(アスタリスク)は0文字以上で、?(クエスチョンマーク)は1文字以上ですか。
分かりました。

ありがとうございました。