我刚开始使用regex,并试图找出在scala中使用的东西。
我试图在一个很长的字符串中识别URL。我到处看看,发现最好的就是
val regex = """https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?""".r不过,这还有些不尽如人意的地方,在最后留下“>图像”之类的东西。我正试图弄清楚我的正则表达式到底是什么意思,这样我就可以解剖它,让它在.com/.org/.edu/.whatever.中的.之后碰到一个非单词字符时停止。
我希望有人不会介意解释这个预先形成的regex中有哪些单独的元素,这样我就可以弄清楚发生了什么,并了解更多关于regex的知识。我已经读过一两本教程,发现了一些东西,但是我想我现在想要的东西对我来说是无价的。
我明白了:
?后面的https意味着s是optional?,后面的元素意味着它们的意思,optional\w似乎意味着单词,characters\d似乎意味着数字,.覆盖大多数字符,除非转义的我不明白:
我们是如何确定何时转义+
:或:转义字符的(我以为它是反斜杠,但这里似乎不起作用?)。
无论如何,我希望有人能指导我一个问题,而不是把我推到另一个教程,帮助解释个别元素的出现。我会感激的。
regexlib帮了我一个忙:
val regex = """https?://\w+\.\w+\.\w+[\w/_\.\?=&:]+""".r我能理解的每一点!
发布于 2011-12-03 00:34:25
我认为包含“>Image”的主要问题是通过替换匹配查询html字符串的部分来解决的。
(\?\S+)使用不包括“<>”的内容,如\S所做的那样
(\?[\w=$&.\-^@#~+%]+)https://stackoverflow.com/questions/8361830
复制相似问题