Regex для новичка - PullRequest
       5

Regex для новичка

0 голосов
/ 02 декабря 2011

Я новичок в регулярных выражениях и пытаюсь найти что-то для использования в scala.

Я пытаюсь определить URL-адреса в очень длинной строке. Я много осматривался, и лучшее, что я нашел, это

val regex = """https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?""".r

Это оставляет желать лучшего, но оставляет в конце такие вещи, как ""> Изображения ". Я пытаюсь выяснить, что, черт возьми, означает мое регулярное выражение, чтобы я мог анализировать его и останавливать, когда оно попадает в несловесный символ после . в .com / .org / .edu / .whatever.

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

Я понял:

  • ? после https означает, что s является необязательным
  • ? после элементов означает, что они необязательны
  • \w кажется, что означают символы слова
  • \d, кажется, означает цифры
  • . охватывает большинство символов, если не удалось избежать

Я не понимаю:

  • как мы выясняем, когда бежать
  • как : работает или +
  • Какие экранирующие символы на самом деле (я думал, что это был обратный слеш, но здесь это не сработало?)
  • как указать, что требование может указывать слово для диапазона, так как слово char не просто один символ, а 1-X символ

В любом случае, я надеялся, что кто-то может наставить меня в вопросе, а не подтолкнуть меня к еще одному учебнику, помогая объяснить отдельные элементы по мере их появления. Буду признателен за это.

regexlib был полезен и получил меня:

val regex = """https?://\w+\.\w+\.\w+[\w/_\.\?=&:]+""".r

каждый бит, который я понимаю!

1 Ответ

2 голосов
/ 03 декабря 2011

Я думаю, что ваша основная проблема с "> включаемыми изображениями решена путем замены части, соответствующей строке html запроса

(\?\S+)

с чем-то, что не включает "<>, как \ S делает

(\?[\w=$&.\-^@#~+%]+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...