C# REGEX

L9
На сайте с 28.12.2009
Offline
53
1132

Мне нужно написать парсер линков с хтмл страниц.

Написал я Regex всё работает, только парсит так же линки в коментах

<!-- links -->

и в JS, <script> links </script> , что мне не надо.

Может кто знает как в самом регулярном выражение это исключить ?

Тут рабочие выражения для парсинга линков с хтлм кода:

<a[^>]+href="([^"]+)"[^>]*>(.*?)</a>

Спасибо.

Программирую на ASP.NET, MVC, C#, ANGULAR JS
VoV@
На сайте с 22.09.2007
Offline
196
#1

В самом выражении Вы такие ссылки эффективно не исключите.

Пишите специальный код для исключения ссылок в скриптах и комментариях.

⭐ Разработка Андроид-приложений (Xamarin C#). ⭐ Разработка ASP.NET (WebForms, MVC, WebAPI, Core). ⭐ Цой жив!
[Удален]
#2

Вначале извлекаем только тот участок кода, где находится линки (удаляем JS и пр муть), а потом из него парсим линки.

S
На сайте с 10.03.2008
Offline
94
#3

<a[^>]*> - так не устраивает?

Разрабатываем сайты (http://www.rclsoft.ru/)
T.R.O.N
На сайте с 18.05.2004
Offline
314
#4

levka9, хотите обойти подобные ошибки, делайте нормальный HTML парсер, который понимает структуру самого кода

Steepler:
<a[^>]*> - так не устраивает?

а как быть с <!-- <a ...>......</a> --> или <textarea> <a ...>......</a> </textarea>?

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
S
На сайте с 10.03.2008
Offline
94
#5
T.R.O.N:
levka9, хотите обойти подобные ошибки, делайте нормальный HTML парсер, который понимает структуру самого кода
а как быть с <!-- <a ...>......</a> --> или <textarea> <a ...>......</a> </textarea>?

Обойти линки в комментариях и JS не получится. Сложно написано. Может достаточно более простой записи, чтобы парсить линки?

VoV@
На сайте с 22.09.2007
Offline
196
#6

levka9, простейший способ выбросить из текста всё содержимое <script></script> и <!-- --> с помощью тех же регекспов, а за тем найти ссылки в оставшейся части.

VoV@ добавил 28.06.2010 в 13:11

T.R.O.N, с днём рожденья! 🍻

alexandr_nv
На сайте с 23.04.2009
Offline
39
#7
VoV@:
В самом выражении Вы такие ссылки эффективно не исключите.
Пишите специальный код для исключения ссылок в скриптах и комментариях.

Исключить можно.

Помогут negative\positive lookahead\lookbehind

Dreammaker
На сайте с 20.04.2006
Offline
569
#8
alexandr_nv:
Исключить можно.

только зачем? :)

L9
На сайте с 28.12.2009
Offline
53
#9

вот подсказали на другом форуме сделать так:

(?:<!--[\s\S]*?-->[\s\S]*?)?(<a[^>]+href="([^"]+)"[^>]*>(.*?)</a>)

Идея такая - пропустить (если есть) коментарии, и парсить <a>

должно работать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий