2015-03-02 45 views
0

我正在匹配Twitter个人资料网址中的用户名部分 - 例如。 http://www.twitter.com/joebloggs正则表达式匹配任一网址表单

目前,我成功地使用http://www.twitter.com/(\ w +)

但是,在某些情况下,源URL的格式为http://www.twitter.com/@joebloggs

这是不必要的,但我仍然需要找到“ joebloggs“都是一样的。所以我需要匹配的格式没有@或与@。

我已经尝试过使用管道或垂直条的各种方法。

谢谢。

回答

2

您可以通过使用使@可选:

^http:\/\/www\.twitter\.com\/@?(\w+) 

说明:

^   # match start of input 
http:  # match literal http:// 
\/\/   # match 2 // (escaping is needed for some regex engines) 
www   # match literal www 
\.   # match literal dot (escaping since dot is special meta char) 
twitter\.com # match literal twitter.com 
\/   # match literal/
@?   # match optional @ 
(\w+)  # match 1 or more word characters and group it 
+2

如果走@出捕获的,那么他将永远得到 “joebloggs”(不管@):'^ http:\/\ www \ .twitter \ .com \/@?(\ w +)' – nils 2015-03-02 09:07:36

+0

我不确定是否需要在捕获的文本中包含“@” 。但是,我同意,如果意图总是捕获'joebloggs',则正则表达式必须是:'^ http:\/\/www \ .twitter \ .com \/@(?\ w +)' – anubhava 2015-03-02 09:37:45

+0

第一个答案,包括 @。我需要它_stripped_它在URL中的位置。第二个回复工作。谢谢。我如何理解这里的正则表达式...? 1)^是否匹配http://www.twitter.com/是字符串的开头? 2)你必须逃避这段时间? 3)我不完全理解@(?\ w +)背后的逻辑 – 2015-03-02 11:15:04