• ベストアンサー

「.」を含む任意の文字

正規表現で 任意の文字は「.」で表現できますが、 これだとドットそのもの(.)が上手くマッチしませんでした。 任意の文字に「.」を含ませるにはどうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.6

Apache のこの辺は詳しくないので申し訳ないんですが、 正規表現の解釈の問題ではないような気がします。 問題のルールを含めていろいろ設定があるわけですよね。 何かほかに優先されて実行されているものがあってそれが悪さ(と言えるのかは微妙ですが) しているとかはないでしょうか? たとえば今 '.' を使っているところを [./A-Za-z] みたいにしても 結果は変わらないでしょう? #文字クラスでこう書いて'.'が含まれないことはないはず

madman666
質問者

お礼

何度もありがとうございます。 ・・・やはりダメでした; 先に書いたように、 nameに「.」をふくまない たとえば list/fugafuga などは大丈夫ですし、 直に list.php?name=hogehoge. にアクセスした場合は上手くわたせるので、 もう何が何やら・・・ ウィキペディアを見ると キーにドットを含むアドレスというのは存在するようなので、 できるようなのですが・・・ よろしくお願いします。

その他の回答 (5)

  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.5

RewriteRule ^list/(.+)$ /sample/list.php?name=$1 これじゃだめ? 実験してないけど,mod_rewriteのマニュアルの RewriteRuleのサンプルにはついてるのがあるよ.

madman666
質問者

お礼

+を&に変えて試してみましたが、やはりレコードが見つからないことになってしまいます。 直接 list.php?name=hogehoge. のようにアクセスすると表示できるのですが・・・

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

ん~, (.+)+ でマッチさせると $1 は何になるんだろ.... 単純に (.+) じゃダメなのかなぁ?

madman666
質問者

補足

やはりドットを含んでいると上手くいきません。 困りました・・・; みなさんよろしくお願いします!

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

> mod_rewriteでアドレスを書き換えているのですが、 > パラメータに「.」が含まれていると上手く渡せないので、 > RewriteRule の (.+) が間違っているのかなと思ったのですが・・・ Ruleで与えたパターンと、どういうデータを食わせて期待通りに動いていないのかの サンプルを出してもらえませんか?

madman666
質問者

補足

RewriteRule ^list/(.+)+ /sample/list.php?name=$1 というRuleで、 list/hogehoge. にアクセスするとエラーになってしまうのです。 nameに「.」をふくまない たとえば list/fugafuga などは大丈夫ですし、 直に list.php?name=hogehoge. にアクセスした場合は上手くわたせるので、 やはり正規表現が間違っているのかなと思ったのですが・・・ よろしくお願いします。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

#1の方もかかれていますが、. は任意の一文字なのでピリオド自体にもマッチします。 あなたが、 >これだとドットそのもの(.)が上手くマッチしませんでした。 と判断した理由をきちんと書くと、勘違いのポイントを指摘してもらえるでしょう。

madman666
質問者

補足

ええと・・・ mod_rewriteでアドレスを書き換えているのですが、 パラメータに「.」が含まれていると上手く渡せないので、 RewriteRule の (.+) が間違っているのかなと思ったのですが・・・ 直接 ?param=hogehoge. のようにして渡すと上手くいくので・・・ 説明がへたくそですみません・・・

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

>任意の文字に「.」を含ませるにはどうすればよいのでしょうか? '.' も含まれるはずですよ? キャラクタとしての'.' のみという話であれば、 \. とするか [.] とでもすれば。

関連するQ&A