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

質問

質問者: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
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示良回答のみ表示