регулярное выражение для извлечения URL-адресов из текста - Ruby - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь обнаружить urls из текста и заменить его, заключив в кавычки, как показано ниже:

original text: Hey, it is a url here www.example.com
required text: Hey, it is a url here "www.example.com"

original text показать мое входное значение, а required text представляет требуемый вывод.Я много искал в Интернете, но не смог найти никакого возможного решения.Я уже попробовал функцию URL.extract, но, похоже, она не обнаруживает URLs без http или https.Ниже приведены примеры некоторых URL, с которыми я хочу иметь дело.Пожалуйста, дайте мне знать, если вы знаете решение.

ANQUETIL-DUPERRON Abraham-Hyacinthe, KIEFFER Жан-Люк, www.hominides.net/html/actualites/outils-preuve-presence-hominides-asie-0422.php, Les Belles lettres, 2001.

https://www.ancient -code.com / индийские археологи-спотыкаться-руины-великие-забытые-цивилизация-мизорам /

www.jstor.org / stable / 24084454

www.biorespire.com / 2016/03/22 / une-nouvelle-villeantique-d% C3% A9couverte-en-inde /

ins.cnrs.fr / terre-solide / terre-et-vie / de-nouvellesdatations-repoussent-l-age-de-l-apparition-d-outils-surle-so

www.cerege.fr / spip.php? page = pageperso & id_user = 94

1 Ответ

0 голосов
/ 24 апреля 2019

Найдите слова, которые выглядят как URL:

str = "ANQUETIL-DUPERRON Abraham-Hyacinthe, KIEFFER Jean-Luc, www.hominides.net/html/actualites/outils-preuve-presence-hominides-asie-0422.php,Les Belles lettres, 2001.\n\nhttps://www.ancient-code.com/indian-archeologists-stumbleacross-ruins-great-forgotten-civilization-mizoram/\n\nwww.jstor.org/stable/24084454\n\nwww.biorespire.com/2016/03/22/une-nouvelle-villeantique-d%C3%A9couverte-en-inde/\n\ninsu.cnrs.fr/terre-solide/terre-et-vie/de-nouvellesdatations-repoussent-l-age-de-l-apparition-d-outils-surle-so\n\nwww.cerege.fr/spip.php?page=pageperso&id_user=94"

str.split.select{|w| w[/(\b+\.\w+)/]}

Это даст вам массив слов без пробелов, включающий один или несколько символов ., которые МОГУТ работать в вашем случае использования.

puts str.split.select{|w| w[/(\b+\.\w+)/]}
www.hominides.net/html/actualites/outils-preuve-presence-hominides-asie-0422.php,
https://www.ancient-code.com/indian-archeologists-stumbleacross-ruins-great-forgotten-civilization-mizoram/
www.jstor.org/stable/24084454
www.biorespire.com/2016/03/22/une-nouvelle-villeantique-d%C3%A9couverte-en-inde/
insu.cnrs.fr/terre-solide/terre-et-vie/de-nouvellesdatations-repoussent-l-age-de-l-apparition-d-outils-surle-so
www.cerege.fr/spip.php?page=pageperso&id_user=94

Обновлено

Полное решение для изменения вашей строки:

str_with_quote = str.clone # make a clone for the `gsub!`

str.split.select{|w| w[/(\b+\.\w+)/]}
   .each{|url| str_with_quote.gsub!(url, '"' + url + '"')} 

Теперь ваш клонированный объект заключает URL в двойные кавычки

puts str_with_quote

Даст вам этот вывод

ANQUETIL-DUPERRON Abraham-Hyacinthe, KIEFFER Jean-Luc, "www.hominides.net/html/actualites/outils-preuve-presence-hominides-asie-0422.php,Les" Belles lettres, 2001.

"https://www.ancient-code.com/indian-archeologists-stumbleacross-ruins-great-forgotten-civilization-mizoram/"

"www.jstor.org/stable/24084454"

"www.biorespire.com/2016/03/22/une-nouvelle-villeantique-d%C3%A9couverte-en-inde/"

"insu.cnrs.fr/terre-solide/terre-et-vie/de-nouvellesdatations-repoussent-l-age-de-l-apparition-d-outils-surle-so"

"www.cerege.fr/spip.php?page=pageperso&id_user=94"
...