- ベストアンサー
正規表現 ^[^./][^/]*$ は
a-kumaの回答
> どうも[]の中では[.]は「任意の1字」ではなく文字「.]と認識されるようです そうですよ。 正規表現 [] の中では、特別にエスケープしなくてはいけないのは、] と \ だけです。 後注意をしなければいけないのが - か。 > 例 4-4より安全なファイル名の確認 パスの区切りである / を許しちゃうと、プログラムが期待しているファイルの置き場所以外に ファイルを置かれちゃう可能性がある、という意味で「安全」という表現をしているのでしょう。 また、unix 系では、ファイル名の先頭がピリオドだと、ls で -a をつけないと見えなくなっちゃうので、 そういうファイル名もはじいておこう、ということでしょう。 > オペレーティングシステムにより、注意するべきファイルは大きく変化し ます。 こういうのは、ファイル名のパターンマッチではじくのではなく、ファイルシステムのパーミッションで はじくのが正解。 ファイルアクセスに権限がないような OS では、cgi や php などを安直に動かしてはいけない、ってこと。 # 今時では、気にすることではないけれど...
関連するQ&A
- 正規表現について
リンク集を作ってみようと試みています。 URLチェックののさいに ereg("^http://+($|[a-zA-Z0-9_~\.\-\/])+$)というのを本から探し使ってみたのですが、あまり意味がわからなくて、教えてください。 +でつないである表現のうち、一番最後の+$の部分が何を意味しているのかがわかりません。どういう意味なのでしょうか? それと、ハイフンの入っているアドレスを登録しようとすると登録ができません。そこでいろいろいじって[a-zA-Z0-9_~\.\/\-]に変更したら、うまくいったのですが、理由がわかりません。これでよかったのでしょうか?
- ベストアンサー
- PHP
- |。ってなんですか? 正規表現
正規表現の学習中です。読んでいる本の中に次の式がありました。 (?<=^|。)[^。]+。 日本語の文章の中から一文を抽出するための正規表現です。 。以外の文字がダーッと連なった後に。が来る文字列 とのことです。 [^。]は。以外の文字 +はそれが1個以上ある ですから [^。]+ は 。以外の文字が1個以上ある という意味です。 その後に。が付きますから、 [^。]+。 だけで 。以外の文字がダーッと連なった後に。が来る文字列 ということになります。 では (?<=^|。) の意味は何でしょう。 (?<=なんたら) は後方参照を意味しますから、 ^|。 のすぐ後に [^。]+ が続くと言いたいのでしょうか。 だとすると ^|。 が問題です。 ^もしくは。 という意味なら、^は正規表現で記号として使われている文字ですから、 \^|。 と表現されそうなものです。 それに、。は文末でしか利用されない文字ですから、これに注目して検索を行うというのは理解できますが、^は日本語でなんら特徴を持つ文字ではありません。 ^もしくは。 という理解は間違いでしょう。 それでは^を記号として考えるとして、その前後を[]で囲んでいないから、この^は文字列の先頭を表すのでしょうか。そうすると件の正規表現は 先頭の|。のすぐ後から。以外の文字が連なった後に。が来る文字列 という意味になります。日本語の一文を抽出する正規表現という解説にかなり近づいてはいます。 しかし |。 とは一体何? |はorを意味する記号ですが、 何とか or 。 という意味でしょうか。 でも「何とか」は「何とか」なりに何か文字表現がなされていても良さそうですし、それに 先頭の「何とか」または。のすぐ後から・・・ という解釈は意味不明。 |。 はどのように解釈すべきなのでしょうか。 お手数をお掛けします。
- ベストアンサー
- Perl
- 正規表現について
現在シスコのAS-pathの正規表現について勉強しています。 下記の意味について教えていただけませんでしょうか。 ・^(1234)+$ 上記は、AS1234で始まるものという意味なのでしょうか。 また、正規表現について調べているのですが、いまいちいいサイトがありません。お手数ですが、いい参考URLがあれば教えていただけませんでしょうか。
- ベストアンサー
- その他([技術者向] コンピューター)
- 正規表現で「(.*?)&」とは?
あるjavascriptプログラムでaタグのhrefをmatchさせるのに、 a=document.getElementsByTagName; for(i=0;i<a.length;i++){ if (a[i].href.match(/hogehoge\?url=(.*?)&/)){ ... } } のように書かれていたのですが、matchの中の(.*?)&の部分が少し理解できません。まず、.*でほとんど全ての文字を任意の長さでmatchさせるのは分かるのですが、そのあとの?と括弧のあとの&の意味が分かりません。 括弧に入るのは一般的なURLなのですが、?があると、たとえばwwwなどはmatchしないように思うのですが、違うのでしょうか。また、そのあとの&はどういった意味なのか分かりません。 以上の二点について分かる方教えてください。
- ベストアンサー
- JavaScript
- 正規表現の書き方について
既存のプログラムで以下のソースがあります。 ------------------------------------------------ if(this.MAIL_ADDRESS.matches("[0-9-a-z-A-Z]*")){ ------------------------------------------------ [0-9-a-z-A-Z]と[0-9a-zA-Z]は同じ意味と考えてよいのでしょうか? それとも現状のプログラムの書き方が間違えていますか? (ネットで調べても、[0-9-a-z-A-Z]という書き方は見かけなかったため。たぶん動作はしてくれていると思うのですが。。) よろしくお願いいたします。
- ベストアンサー
- Java
- 正規表現について
function df(){ var sty=0; if(!document.ad.ad1.value.match(/[^0-9]+/)){ sty=1; } if(sty){ alert("違います"); return false; } else{ return ture; } } 一点だけわかりません。 (/[^0-9]+/)です。 普通に[0-9]で数字のみにすればいいのに /とか^はなんの意味があるんでしょうか?
- ベストアンサー
- JavaScript