2016-04-09 15 views
-1

Ich habe eine Datei skip.txt genannt, die folgenden Informationen enthält:einen Weg benötigen Informationen aus einer Datei zu packen und überspringt, wenn Informationen in einer anderen Datei sind

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

Ich habe auch eine Datei information.txt aufgerufen, enthalten diese Informationen:

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 

ich einen Weg, wollen diese Informationen zu packen und auf die next url zu bewegen, ist es eine Möglichkeit, die ich von der skip.txt Datei und wenn die information.txt Datei con lesen konnte alles auf dieser Datei skip.txt Datei bewegt sich zur nächsten URL in der Datei?

Erwartete Ausgabe:

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 

ich ein wenig Forschung und fand die grep Funktion gemacht habe, aber das wäre eine komplexe Regex erfordern, an dem ich bin nicht sehr gut .. Also, wenn Sie können entweder hilf mir, einen Weg zu finden, um die Informationen in skip.txt zu überspringen, oder hilf mir mit einer Regex, die großartig wäre! Vielen Dank im Voraus.

+0

in Zukunft kochen Sie bitte Ihre Beispiele unten Wesentliche. Um das zu verdeutlichen, hätte "skip_txt" drei oder vier Zeilen und "information.txt" hätte weniger und viel kürzere Zeilen. Die Zeilen in 'skip.txt' enden alle mit einem nachgestellten Leerzeichen, was offensichtlich nicht erwartet wird. Ich konnte nicht verstehen, warum mein Code nicht funktionierte, bis ich den Fehler in diesen Bereichen nachverfolgte. Bitte bearbeiten, um sie zu entfernen. –

+0

@CarySwoveland Es tut mir leid, ich bin neu hier. Ich werde den Code bearbeiten, um die folgenden Leerzeichen zu entfernen. – JasonBorne

Antwort

0

Angenommen, Sie lesen die Überspringdatei in die Variable skip und die Informationsdatei in die Variable info_file. Dann

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) (was man sich denken kann, wie .map { |s| s.strip }) verwendet String#strip alle Leerzeichen zu entfernen, die die Elemente des Arrays umgeben von skip.split("\n") hergestellt. Dies ist möglicherweise nicht notwendig, ist aber vorsichtshalber nicht schädlich.

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...] 

Als nächstes definieren wir einen regulären Ausdruck.

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 

Schließlich verwenden die Methode Array#reject jene Elemente der info.arr, die dieses "regex" entsprechen zu entfernen:

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"] 
Verwandte Themen