質問 |
||
| 質問者:madman666 | 「.」を含む任意の文字 | |
|---|---|---|
困り度:
|
正規表現で 任意の文字は「.」で表現できますが、 これだとドットそのもの(.)が上手くマッチしませんでした。 任意の文字に「.」を含ませるにはどうすればよいのでしょうか? |
|
質問投稿日時:08/03/21 16:19 質問番号:3882317 |
||
回答良回答20pt |
|
| 回答者:sakusaker7 | Apache のこの辺は詳しくないので申し訳ないんですが、 正規表現の解釈の問題ではないような気がします。 問題のルールを含めていろいろ設定があるわけですよね。 何かほかに優先されて実行されているものがあってそれが悪さ(と言えるのかは微妙ですが) しているとかはないでしょうか? たとえば今 '.' を使っているところを [./A-Za-z] みたいにしても 結果は変わらないでしょう? #文字クラスでこう書いて'.'が含まれないことはないはず |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/23 14:35 回答番号:No.6 |
|
| この回答へのお礼 | 何度もありがとうございます。 ・・・やはりダメでした; 先に書いたように、 nameに「.」をふくまない たとえば list/fugafuga などは大丈夫ですし、 直に list.php?name=hogehoge. にアクセスした場合は上手くわたせるので、 もう何が何やら・・・ ウィキペディアを見ると キーにドットを含むアドレスというのは存在するようなので、 できるようなのですが・・・ よろしくお願いします。 |
回答良回答10pt |
|
| 回答者:kabaokaba | RewriteRule ^list/(.+)$ /sample/list.php?name=$1 これじゃだめ? 実験してないけど,mod_rewriteのマニュアルの RewriteRuleのサンプルにはついてるのがあるよ. |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/23 12:08 回答番号:No.5 |
|
| この回答へのお礼 | +を&に変えて試してみましたが、やはりレコードが見つからないことになってしまいます。 直接 list.php?name=hogehoge. のようにアクセスすると表示できるのですが・・・ |
回答 |
|
| 回答者:Tacosan | ん〜, (.+)+ でマッチさせると $1 は何になるんだろ.... 単純に (.+) じゃダメなのかなぁ? |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/22 21:51 回答番号:No.4 |
|
| この回答への補足 | やはりドットを含んでいると上手くいきません。 困りました・・・; みなさんよろしくお願いします! |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:sakusaker7 | > mod_rewriteでアドレスを書き換えているのですが、 > パラメータに「.」が含まれていると上手く渡せないので、 > RewriteRule の (.+) が間違っているのかなと思ったのですが・・・ Ruleで与えたパターンと、どういうデータを食わせて期待通りに動いていないのかの サンプルを出してもらえませんか? |
|---|---|
| 種類:補足要求 どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/03/22 15:03 回答番号:No.3 |
|
| この回答への補足 | RewriteRule ^list/(.+)+ /sample/list.php?name=$1 というRuleで、 list/hogehoge. にアクセスするとエラーになってしまうのです。 nameに「.」をふくまない たとえば list/fugafuga などは大丈夫ですし、 直に list.php?name=hogehoge. にアクセスした場合は上手くわたせるので、 やはり正規表現が間違っているのかなと思ったのですが・・・ よろしくお願いします。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:notnot | #1の方もかかれていますが、. は任意の一文字なのでピリオド自体にもマッチします。 あなたが、 >これだとドットそのもの(.)が上手くマッチしませんでした。 と判断した理由をきちんと書くと、勘違いのポイントを指摘してもらえるでしょう。 |
|---|---|
| 種類:補足要求 どんな人:専門家 自信:自信あり |
|
| |
回答日時:08/03/21 21:40 回答番号:No.2 |
|
| この回答への補足 | ええと・・・ mod_rewriteでアドレスを書き換えているのですが、 パラメータに「.」が含まれていると上手く渡せないので、 RewriteRule の (.+) が間違っているのかなと思ったのですが・・・ 直接 ?param=hogehoge. のようにして渡すと上手くいくので・・・ 説明がへたくそですみません・・・ |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:sakusaker7 | >任意の文字に「.」を含ませるにはどうすればよいのでしょうか? '.' も含まれるはずですよ? キャラクタとしての'.' のみという話であれば、 \. とするか [.] とでもすれば。 |
|---|---|
| 種類:回答 どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/03/21 16:46 回答番号:No.1 |
|
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |