2015-09-28 75 views
-2

我需要一個與Twitter用戶名匹配的正則表達式。爲Twitter用戶名廢棄HTML

所以我想抓取頁面的HTML來獲取所有有效的Twitter用戶名。 因此,不應該返回電子郵件,也無效的用戶名,因爲我知道有一些字符不允許在Twitter用戶名。

如果提供C#示例,則爲獎勵。

編輯:

我直到現在是:

Regex regex = new Regex(@"/(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)/i"); 
string html = GetPageHtml(uri); 
Match match = regex.Match(html); 

我檢查這一點,但它不工作的罰款。此外,我得到的信息,嘰嘰喳喳庫有功能,但我找不到它。

我並不真正熟悉的正則表達式

+2

你嘗試過什麼嗎?我們不是爲了免費服務。我可能會利用[Html Agility Pack](https://htmlagilitypack.codeplex.com/),解析出文本內容,並與該數據進行匹配,而不是拼湊HTML內容。 – hwnd

+0

你檢查了這個答案嗎? http://stackoverflow.com/a/5768768/1400768根據作者,它來自Twitter的圖書館 – nhahtdh

回答

1

此正則表達式應該做的:

/[^\w]@([a-zA-Z0-9_]{1,15})(?:\b)(?![\;\:\-\.\[\]\*\?\!\$\^\+\/\#\"\'\=\(\)\&\@á-ź{-º])/igm 

這是一個測試:http://regexr.com/3bss5

我在Javascript測試,但我相信你不會有任何使它在C中工作的問題#

+0

這個正則表達式匹配匹配的單詞之前和之後的空格。你可以修復它,使它不匹配那些空間 – carpics

+0

它有一個捕獲組,只使用第一個,它將只有用戶名。 –

+0

還有一個問題。如果字符串是:「Something'@username''@ username2',它將只返回@username。如果它正好在一些其他用戶名後面,它不返回用戶名。單引號只是因爲stackoverflow標記用戶 – carpics