2015-03-02 103 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