新手的正则表达式

时间:2011-12-02 19:53:48

标签: regex scala

我是正则表达式的新手,并尝试在scala中使用。

我正在尝试在很长的字符串中识别网址。我看了很多,我发现的最好的是

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

这留下了一些不足之处,但最后留下了像“”>图像“这样的东西。我正在试图弄清楚我的正则表达式意味着什么,所以我可以解剖它并在它击中时停止它. / .com / .org / .edu .whatever之后的非单词字符。

我希望有人不介意解释这个预先形成的正则表达式中的各个元素,以便我可以弄清楚正在发生什么并了解有关正则表达式的更多信息。我已经完成了一两个教程并找到了一些东西,但我认为我认为对我来说非常宝贵。

我明白了:

    https表示s是可选的
  • ?
  • 元素意味着它们是可选的
  • ?
  • \w似乎是指单词字符
  • \d似乎意味着数字
  • .涵盖大多数字符,除非转义

我没有得到:

  • 我们如何计算何时逃跑
  • :如何运作或+
  • 真正的逃脱角色(我认为这是反斜杠,但这似乎不起作用?)
  • 如何指定需求可以为一个范围添加单词,所以像单词char不只是一个char,而是1-X chars

无论如何,我希望有人可以指导我一个问题,而不是通过帮助解释他们出现的各个元素来推动我到另一个教程。我很感激。

regexlib很有帮助,让我:

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

我理解的每一点!

1 个答案:

答案 0 :(得分:2)

我认为“>包含图片的主要问题是通过替换与查询html字符串匹配的部分来解决

(\?\S+)

某些内容不包含“<>作为\ S

(\?[\w=$&.\-^@#~+%]+)