新手的正则表达式



我是regex的新手,试图找出一些在scala中使用的东西。

我试图在一个很长的字符串中识别url。我找了很多地方,我找到的最好的是

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

这留下了一些东西需要,但留下的东西,如">图像"在最后。我试图弄清楚我的正则表达式意味着什么,所以我可以剖析它,并使它停止,当它击中.com/.org/.edu/.whatever中的.之后的非单词字符。

我希望有人不介意解释这个预形成的regex中的各个元素,以便我可以弄清楚发生了什么并了解更多关于regex的信息。我读了一两个教程,发现了一些东西,但我认为我所要求的对我来说是非常宝贵的。

我明白了:

  • https后面的?表示s是可选的
  • 元素后的?表示它们是可选的
  • w似乎是指文字字符
  • d似乎是指数字
  • .覆盖大部分字符,除非转义

我不明白:

  • 我们如何计算何时逃离
  • :如何工作或+
  • 什么转义字符是真正的(我认为这是一个反斜杠,但这似乎不工作在这里?)
  • 如何指定一个要求可以为一个范围的字,所以像字字符不只是一个字符,而是1-X字符

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

regexlib很有帮助,并得到了我:

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

每一点我都明白!

我认为你的主要问题与">图像被包含是通过替换匹配的部分查询html字符串

(?S+)

不包含" <</p>

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

最新更新