Соответствие RegEx для HTML и не-HTML URL - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь получить все URL из этого текста. Абсолютные и относительные URL, но я не получаю правильное регулярное выражение. Выражение сочетается с большим количеством вещей, чем я хотел бы. Вы получаете HTML-теги и другую информацию, которую я не хочу.

Попытка

(\w*.)(\\\/){1,}(.*)(?![^"])

Input

<div class=\"loader\">\n       <div class=\"loaderImage\"><img src=\"\/c\/Community\/Rating\/img\/loader.gif\" \/><\/div>\n    <\/div>\n<\/div>\n<\/div><\/span><\/span>\n
   <a title=\"Avengers\" href=\"\/pt\/movie\/Avengers\/57689\" >Avengers<\/a>                                                                                                                        <\/div>\n         
<img title=\"\" alt=\"\" id=\"145793\" src=\"https:\/\/images04-cdn.google.com\/movies\/74932\/74932_02\/previews\/2\/128\/top_1_307x224\/74932_02_01.jpg\" class=\"tlcImageItem img\"  width=\"307\"   height=\"224\"  \/>
pageLink":"\/pt\/videos\/\/updates\/1\/0\/Category\/0","previousPage":"\/pt\/videos\/\/updates\/1\/0\/Category\/0","nextUrl":"\/pt\/videos\/\/updates\/2\/0\/Category\/0","method":"updates","type":"scenes","callbackJs"
<span class=\"value\">4<\/span>\n        <\/div>\n          <\/div>\n    <div class=\"loader\">\n       <div class=\"loaderImage\"><img src=\"\/c\/Community\/Rating\/img\/loader.gif\" \/><\/div>\n    <\/div>\n<\/div>\n<\/div><\/span><\/span>

Демо

1 Ответ

1 голос
/ 23 апреля 2019

Как уже отмечалось, на самом деле не самая лучшая идея - решить эту проблему с помощью RegEx.Однако, если вы хотите попрактиковаться или вам действительно нужно, вы можете сделать точное совпадение между "", где присутствуют ваши URL.Вы можете связать их слева, используя scr, href или любые другие фиксированные компоненты, которые у вас могут быть.Вы можете просто использовать | и перечислить их в первую группу ().

RegEx 1 для HTML-URL

Этот RegEx может небудет правильным решением, но оно может дать вам представление о том, как вы можете подойти к решению этой проблемы с помощью RegEx:

(src=|href=)(\\")([a-zA-Z\\\/0-9\.\:_-]+)(")

Создается четыре группы, чтобы упростить ее обновление, и группа $3может быть вашими желаемыми URL.Вы можете добавить любые символы, которые ваши URL могут иметь в третьей группе.

enter image description here

RegEx 2 для URL-адресов как в HTML, так и в других форматах

Для захвата других URL-адресов, отличных от HTML, вы можете обновить его подобно this RegEx :

(src=\\|href=\\|pageLink\x22:|previousPage\x22:|nextUrl\x22:)(")([a-zA-Z\\\/0-9\.\:_-]+)(") 

, где \x22 означает ", который выЯ могу просто заменить его. Я только что добавил \x22, чтобы вы могли видеть те ", где ваши целевые URL расположены между:

enter image description here

Второй RegEx также имеет четыре группы, где целевая группа - $3.Вы также можете упростить или DRY , если хотите.

...