- 締切済み
正規表現で「チルダ(~)」をマッチさせたい
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- vivlet
- ベストアンサー率36% (24/66)
#1です 当方ではPHPの環境が無いので確証はもてませんが ereg("[^\~]",$urlVars) で~以外になると思います。 テストコードでも書いて試しに動かしてみるのが一番だと思います。 頑張ってください。
- vivlet
- ベストアンサー率36% (24/66)
メタ文字は\を使ってエスケープさせないといけませんね //------------------------------ . 改行を除く任意の 1 文字 * 0 回以上のパターン繰り返し + 1 回以上のパターン繰り返し ? 0 または 1 回のパターン ^ 先頭から $ 末尾から -------------------------------// ということで if(ereg("\~",$urlVars){ にすればいけると思いますよ
補足
ありがとうございます。 では、逆に「チルダ以外にマッチ」とした場合 ereg("[^\~]",$urlVars) みたいになると思うのですが、これだと、「\」「~」以外という事になってしまいますか?
関連するQ&A
- 「マッチしない」正規表現の書き方
正規表現について、おたずねします。 文字列 abc,def,ghi のいずれかにマッチする正規表現は (abc|def|ghi) ですよね。 それでは、「abc,def,ghi のいずれにもマッチしない」正規表現は、どう書けばいいのでしょうか? あちこち調べましたが、どうしてもわかりません。 ただし、if $a =~ /(abc|def|ghi)/ などで、=~ を !~ に直す、というのはナシです。あくまでも右辺の式の中で表現したいのですが…
- 締切済み
- Perl
- PHPの正規表現「ereg」で特定の数字範囲をマッチさせたい
PHPの正規表現「ereg」で特定の数字範囲をマッチさせたい 宜しくお願い致します。 PHPの正規表現で、0~99までの数字があり、そのうち、「4~6」と「11~15」までの数字以外の場合にマッチさせる正規表現について教えて下さい。 自分なりに作ってみた正規表現パターンは下記の通りです。 ereg("([^4-6]{1})|[^11-15])",$hoge) もしくは ereg("([^4-6]{1})|[^11-15]{2})",$hoge) で試してみましたが、「4~6」はマッチしないのですが、「11~15」の時にもマッチしてしまいます。 どうすればいいのか、どなたか助けて下さいー!
- ベストアンサー
- PHP
- エスケープ文字そのものにマッチさせる正規表現
お世話になっております。 PHPの正規表現でエスケープ文字\そのものにマッチさせる正規表現がなかなか作れません。Perl互換のpreg_replaceなども試してみましたがダメでした。エスケープ文字そのものを削除したいのですが、どうしたらよいでしょうか? $value = ereg_replace ('\\', '', $value);//ダメでした。 $value = preg_replace ('/\\/', '', $value);//同様にダメでした。 $value = preg_replace ('/[\\]/', '', $value);//同様にダメでした。 文字列中に\が入っていたり、単独で\があった場合は必要ないので削除するといった感じです。 $value = ereg_replace ('[][}}{)(!"#$%&\\~|*+,/\^\'<>`;:?\\=]', '', $value); これでいけるかと思ったのですが、\だけ残ってしまいます。最後辺りの\\で\文字それ自体にマッチするかと思うんですが…。 わかる方がいらしたらおしえてください。よろしくお願いします。
- ベストアンサー
- PHP
- 秀丸の正規表現
秀丸の正規表現 http://pc.dearie.jp/hidemaru/replace/14.html 上記URLでメールの正規表現について解説があります。 [A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-\_]+\.[A-Za-z0-9\-\.\_]+ この正規表現でメールの検索をおこなっています。この正規表現は理解出来ます。 .*([a-z0-9\-\.\_]+@[a-z0-9\-\_]+\.[a-z0-9\-\.\_]+)([^a-z0-9@\.\-\_]+).* キャプチャを使って正規表現でメールアドレスをマッチしているのは理解できます。 なぜ置換で、「\1,」とやっても、メールアドレスのみを取得できないのでしょうか? 実際に秀丸エディタを使ってやってみましたが、メールアドレスのみ取得することができませんでした。 検索ではメールアドレスにマッチするのに、なんでキャプチャが正しく動かないのかがわかりません・・・
- ベストアンサー
- その他([技術者向] コンピューター)
- [15]にマッチする正規表現
[15]にマッチする正規表現 [15] にマッチする正規表現を書きたいのですが、うまくいきません。。。。 簡単だ、と思ったのですが。。。 expr "$DATA1" : .*\[15\].* と書くと、中の数字が15じゃなくてもマッチしてしまいます。 expr "$DATA1" : .*15.* であれば"15"にマッチしますが、対象の文字列の都合上、カッコでも識別する必要があり 困っております。[と]をエスケープする目的で\をつける、と思っているのですが、何か 思い違いをしているのでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現について
小数点以上3桁、小数点以下1桁までの数をチェックしたく次のようなスクリプトにしましたが、うまくいきません。 if (str.match(/[0-9]{2,3}[\.]?[0-9]?/)!=null){ // OK }else{ // NG } この正規表現では、"str='50a'"などが、私の浅はかな予想に反して、OKになってしまいます。 何が悪いかご教授よろしくお願いします。
- ベストアンサー
- JavaScript
- 正規表現でのマッチング
連想配列%hushがあります。 %hushの中のキーが「a何とか」、つまり a0、a1、a2、a3、・・・ の値だけを、配列@arrayに格納します。 つまり $array[0]=$hush{'a0'} $array[1]=$hush{'a1'} $array[2]=$hush{'a2'} $array[3]=$hush{'a3'} ・・・ といった感じにしたいのですが、 「a何とか」は正規表現を用いて a.* と表現できます。 ってここまでは手元の本で分かったのですが、マッチングのif文をどう書けばいいんだよ! if($key==a.*) と書いてもうまくマッチしてくれないんで、a.*を""で括ってみたり()で括ってみたりするものの相手にされず・・・ 手元の本は「こういう場合正規表現ではこう書けば良くて、これをマッチングさせれば良い」みたいなことを書いていますが、マッチングのさせ方は書いていません。 プログラムの文法書を読むと、条件分岐の仕方は書いていますが、==演算子の右側が正規表現だった場合の使い方は書いていません。 あるいは、正規表現の場合のマッチングはif文などを用いないのでしょうか? だったら正規表現の本にマッチングの文法を書いていますよね!? なんだかんだでマッチングがうまくいかないのです。 この場合、どう記述すればいいのでしょうか? お手数をお掛けします。
- ベストアンサー
- その他([技術者向] コンピューター)
- 正規表現のマッチについて
正規表現について質問させていただきます。 以下のデータがあるとします。 山田太郎(やまだたろう)(ヤマダタロウ) 一個目の『(』の前にタブを挿入したいのですが、一個目の『(』にのみマッチさせる正規表現の書き方を教えて下さい。
- ベストアンサー
- その他(プログラミング・開発)
お礼
レスありがとうございました。 あの後、いろいろ検証した結果、MacintoshのOS10.3の問題ということが解りました。つまり、Windowsでは問題なく動作するのですが、MacのOS10.3では、チルダが全角の「~」になってしまうことが判明しました。さらに、コード「\x7e」とすると、全角の「 ̄」オーバーラインとなり、オーバーラインでのURLアクセスするとうまくアクセスできない事。いちいちその箇所を「チルダ」に打ち変えしないといけない事のようです。OS10.3以前はうまくいったようです....。 よって、どのように対処するかの問題になってしまいました。ウェブでいろいろサーチしているのですが、問題可決のヒントがなかなかみつからないので、どうしようかな?と思っているのが実情です。 誠にありがとうございました。