2016-04-09 112 views
-1

である場合、私は、ファイルがskip.txtと呼ばれる持っているファイルから情報をつかむための方法が必要とスキップ:次の情報が含まれている情報は、別のファイル

stackoverflow.com 
github.com 
www.sa-k.net 
yoursearch.me 
search1.speedbit.com 
duckfm.net 
search.clearch.org 
webcache.googleusercontent.com 

私もこれが含まれているinformation.txtというファイルを持っています情報:

http://search.clearch.org/?a=web&q=Viewcat_h.php%3Fidcategory%3D%20%3Cstrong%3ESite%3C%2Fstrong%3E%20.pl%20 
https://moodle.org/mod/forum/discuss.php?d=246409 
http://webcache.googleusercontent.com/search?q=cache:oqPwN7FtDWgJ 
http://www.aquariumist.com.ua/spr.php?id=7 
http://search.clearch.org/?a%3Dweb%26q%3DViewcat_h.php%253Fidcategory%253D%2520%253Cstrong%253ESite%253C%252Fstrong%253E%2520.pl%2520%2Binurl:viewCat_h.php?idCategory%3D&hl=en&gbv=1&ct=clnk 
http://www.astbury.leeds.ac.uk/research/spr.php 
http://www.media4play.li/s/spr+php+id.html 
http://v.virscan.org/SPR/PHP.ID.html 
http://search.clearch.org/?a=images&q=Viewcat_h.php%3Fidcategory%3D+ 
http://search.clearch.org/?a=web&q=Inurl%20Viewcat_h.php%3Fidcategory%3D%20Site%20Clinsp=%3Fpvaid%3D97f2b2aa136c4af0936453a19d9ab1b2%26fcoid%3D302363 
http://webcache.googleusercontent.com/search?q=cache:5qNE1JBqUeIJ 
http://search.clearch.org/?a%3Dweb%26q%3DInurl%2520Viewcat_h.php%253Fidcategory%253D%2520Site%2520Cl%26insp%3D%253Fpvaid%253D97f2b2aa136c4af0936453a19d9ab1b2%2526fcoid%253D302363%2Binurl:viewCat_h.php?idCategory%3D&hl=en&gbv=1&ct=clnk 

は、私は、この情報を取得し、next URLに移動する方法をしたい、私はskip.txtファイルから読み取ることができな方法がありますし、information.txtファイルCON場合ファイル内の次のURLにファイルが移動するということは何ですか?

予想される出力:

http://www.astbury.leeds.ac.uk/research/spr.php 
http://www.media4play.li/s/spr+php+id.html 
http://v.virscan.org/SPR/PHP.ID.html 
https://moodle.org/mod/forum/discuss.php?d=246409 
http://www.aquariumist.com.ua/spr.php?id=7 

私はどちらか少し研究を行い、grep機能を見つけたが、それは、私は非常に良好ではないよこれで複雑な正規表現を、必要になります。..ですから、できればしましたskip.txtの情報をスキップする方法を見つけるのを手伝ったり、正規表現を手伝ったりすると助かります。早めにありがとうございます。

+0

将来的には、必需品に至るまで、あなたの例を沸騰してください。あなたのポイントを作るために、 "skip_txt"は3行か4行で、 "information.txt"はもっと少ない行と短い行を持つことができました。 'skip.txt'の行はすべて末尾のスペースで終わりますが、これは明らかに予想されません。なぜ私はそれらのスペースにバグを追跡するまで私のコードが機能していなかったのか理解できませんでした。編集して削除してください。 –

+0

@CarySwoveland申し訳ありませんが、私はここで新しいです。後続のスペースを取り除くためにコードを編集します。 – JasonBorne

答えて

0

スキップファイルを変数skipに、情報ファイルを変数info_fileに読み込んだとします。その後

skip_arr = skip.split("\n").map(&:strip) 
    #=> ["stackoverflow.com", "github.com", "www.sa-k.net", "yoursearch.me", 
    # "search1.speedbit.com", "duckfm.net", "search.clearch.org", 
    # "webcache.googleusercontent.com"] 

.map(&:strip)skip.split("\n")によって生成配列の要素を囲むすべてのスペースを削除するString#stripを使用しています(あなたが.map { |s| s.strip }として考えることができます)。これは必要ではないかもしれませんが、予防措置は害ではありません。

info_arr = info.split("\n") 
    #=> ["http://search.clearch.org/?a=web&q=Viewcat_h..., 
    # "https://moodle.org/mod/forum/discuss.php?d=246409", 
    # "http://webcache.googleusercontent.com/search?q=cache:oqPwN7FtDWgJ", 
    # "http://www.aquariumist.com.ua/spr.php?id=7", 
    # "http://search.clearch.org/?a%3Dweb%26q%3DViewcat_h.php..., 
    # "http://www.astbury.leeds.ac.uk/research/spr.php", 
    # "http://www.media4play.li/s/spr+php+id.html", 
    # "http://v.virscan.org/SPR/PHP.ID.html", 
    # "http://search.clearch.org/?a=images&q=Viewcat_h.php%3Fidcategory%3D+", 
    # "http://search.clearch.org/?a=web&q=Inurl%20Viewcat_h.php..., 
    # "http://webcache.googleusercontent.com/search?q=cache:5qNE1JBqUeIJ", 
    # "http://search.clearch.org/?a%3Dweb%26q%3DInurl%2520Viewcat_h.php...] 

次に、正規表現を定義します。

r =/
    (?<=\/\/) # match two forward slashes in a positive lookbehind 
    #{ Regexp.union(skip_arr) } # match any element of skip_arr 
    (?=\/)  # match a forward slash in a positive lookahead 
    /x   # free-spacing regex definition mode 
#=>/
    (?<=\/\/) # match two forward slashes in a positive lookbehind 
    (?-mix:stackoverflow\.com|github\.com|www\.sa\-k\.net|yoursearch\.me| 
     search1\.speedbit\.com|duckfm\.net|search\.clearch\.org| 
     webcache\.googleusercontent\.com) # match any element of skip_arr 
    (?=\/)  # match a forward slash in a positive lookahead 
    /x 

最後に、この「正規表現」に一致するinfo.arrのそれらの要素を削除する方法Array#rejectを使用します。

info_arr.reject { |s| s =~ r } 
    #=> ["https://moodle.org/mod/forum/discuss.php?d=246409", 
    # "http://www.aquariumist.com.ua/spr.php?id=7", 
    # "http://www.astbury.leeds.ac.uk/research/spr.php", 
    # "http://www.media4play.li/s/spr+php+id.html", 
    # "http://v.virscan.org/SPR/PHP.ID.html"] 
関連する問題