2011-06-27 16 views
3

Rubyを使用しているURLのリストからLinkedInのプロフィールページを抽出する方法を探しています。現在、私は、URLを上のループと、この正規表現に対してそれらをマッチングしています:Ruby正規表現での文字列の否定

/^http:\/\/.+\.linkedin.com\/(pub|in)/ 

しかし、次のようにLinkedInのプロファイルディレクトリページのURLは以下のとおりです。

http://www.linkedin.com/pub/dir 

ので、私は任意のを避けるために探していますpub/dirパスがあるリンク。私は、abcでない文字にマッチする[^ abc]のような、Ruby正規表現の文字クラスを否定することが可能であることを知っています。文字列で同じことをする方法はありますか?私。 "dir"以外の文字列にマッチしていますか?

+0

URLの形式はどのような形式ですか?あなたはドットをエスケープするのを忘れたように見える.com – Jostein

+0

ありがとう、私はそのドットをエスケープすることを忘れましたが、それは問題ではありませんでした。 –

答えて

7

否定先読みを使用できます。何かのように

(pub(?!\/dir)|in) 
+0

ありがとうございました。 Pickaxeの正規表現の章で何も見つかりませんでした。 –

+0

最新のピックアックスでは、第1部「Rubyの面」の第7章「正規表現」の「高度な正規表現」の下にある「バックトラッキングの制御」」に素晴らしい書きかけがあります。 – pedz