Я новичок в регулярных выражениях и пытаюсь найти что-то для использования в 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
каждый бит, который я понимаю!