- ベストアンサー
「.」を含む任意の文字
正規表現で 任意の文字は「.」で表現できますが、 これだとドットそのもの(.)が上手くマッチしませんでした。 任意の文字に「.」を含ませるにはどうすればよいのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Apache のこの辺は詳しくないので申し訳ないんですが、 正規表現の解釈の問題ではないような気がします。 問題のルールを含めていろいろ設定があるわけですよね。 何かほかに優先されて実行されているものがあってそれが悪さ(と言えるのかは微妙ですが) しているとかはないでしょうか? たとえば今 '.' を使っているところを [./A-Za-z] みたいにしても 結果は変わらないでしょう? #文字クラスでこう書いて'.'が含まれないことはないはず
その他の回答 (5)
- kabaokaba
- ベストアンサー率51% (724/1416)
RewriteRule ^list/(.+)$ /sample/list.php?name=$1 これじゃだめ? 実験してないけど,mod_rewriteのマニュアルの RewriteRuleのサンプルにはついてるのがあるよ.
お礼
+を&に変えて試してみましたが、やはりレコードが見つからないことになってしまいます。 直接 list.php?name=hogehoge. のようにアクセスすると表示できるのですが・・・
- Tacosan
- ベストアンサー率23% (3656/15482)
ん~, (.+)+ でマッチさせると $1 は何になるんだろ.... 単純に (.+) じゃダメなのかなぁ?
補足
やはりドットを含んでいると上手くいきません。 困りました・・・; みなさんよろしくお願いします!
- sakusaker7
- ベストアンサー率62% (800/1280)
> mod_rewriteでアドレスを書き換えているのですが、 > パラメータに「.」が含まれていると上手く渡せないので、 > RewriteRule の (.+) が間違っているのかなと思ったのですが・・・ Ruleで与えたパターンと、どういうデータを食わせて期待通りに動いていないのかの サンプルを出してもらえませんか?
補足
RewriteRule ^list/(.+)+ /sample/list.php?name=$1 というRuleで、 list/hogehoge. にアクセスするとエラーになってしまうのです。 nameに「.」をふくまない たとえば list/fugafuga などは大丈夫ですし、 直に list.php?name=hogehoge. にアクセスした場合は上手くわたせるので、 やはり正規表現が間違っているのかなと思ったのですが・・・ よろしくお願いします。
- notnot
- ベストアンサー率47% (4900/10358)
#1の方もかかれていますが、. は任意の一文字なのでピリオド自体にもマッチします。 あなたが、 >これだとドットそのもの(.)が上手くマッチしませんでした。 と判断した理由をきちんと書くと、勘違いのポイントを指摘してもらえるでしょう。
補足
ええと・・・ mod_rewriteでアドレスを書き換えているのですが、 パラメータに「.」が含まれていると上手く渡せないので、 RewriteRule の (.+) が間違っているのかなと思ったのですが・・・ 直接 ?param=hogehoge. のようにして渡すと上手くいくので・・・ 説明がへたくそですみません・・・
- sakusaker7
- ベストアンサー率62% (800/1280)
>任意の文字に「.」を含ませるにはどうすればよいのでしょうか? '.' も含まれるはずですよ? キャラクタとしての'.' のみという話であれば、 \. とするか [.] とでもすれば。
お礼
何度もありがとうございます。 ・・・やはりダメでした; 先に書いたように、 nameに「.」をふくまない たとえば list/fugafuga などは大丈夫ですし、 直に list.php?name=hogehoge. にアクセスした場合は上手くわたせるので、 もう何が何やら・・・ ウィキペディアを見ると キーにドットを含むアドレスというのは存在するようなので、 できるようなのですが・・・ よろしくお願いします。