2011-12-02 88 views
0

我是新来的正则表达式,并试图找出在scala中使用的东西。正则表达式新手

我试图确定一个很长的字符串内的网址。我看了看周围了很多,我已经找到了最好的是

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

http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1 –

+0

http://regexpal.com/是创建/学习正则表达式的好工具。它有一个完整的参考表,它可以在填写正则表达式时实时选择文本,这样你就可以看到发生了什么。 – Phil

+0

@phizzle这些是JavaScript的正则表达式,我们正在谈论Java/Scala的正则表达式 –

回答

2

我觉得你的主要问题“>图片被列入被更换的零件查询HTML字符串

(\?\S+) 

的东西,不包括配套解决” <>为\ S确实

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