2015-04-04 37 views
1

變化的令牌所以我有一個令牌,它看起來才比如像asdkl3njkln1mlnmlaskjenr&[email protected]&asd345d&password=example&asd986asn如何選擇與Regex.Match

的串/後不斷&[email protected]&&password=example&更改每個頁面加載。

我只需要用戶輸入他的用戶名/密碼到文本框來檢查訂單狀態等。我將如何從令牌獲取電子郵件地址和密碼?

我在VB.NET嘗試什麼:

Dim token As String = Regex.Match(htmlPage, "(?\<email=\)+user+(?=\\&\)").Groups(0).Value 

但是,這似乎並沒有工作。

htmlpage是具有訂單狀態的網站的登錄頁面,該訂單狀態下載的順序爲Regex,以便在標記中的這些字符串之間進入。

+1

不要使用正則表達式這一點。 [使用查詢字符串分析器](https://msdn.microsoft.com/en-us/library/ms150046%28v=vs.110%29.aspx)(如果它確實是查詢字符串,如圖所示)。 – user2864740 2015-04-04 02:23:57

+0

@ user2864740是對的。下面是一個將演示如何的示例:http://stackoverflow.com/questions/12781829/vb-net-parse-query-string-to-array – Seamus 2015-04-04 02:29:12

+0

終於讓它起作用了。謝謝。 – Khasym 2015-04-04 14:57:42

回答

0

雖然最好的答案是使用查詢解析器,但我想解釋當前正則表達式的問題。主要的一點是你過度逃過角色,並使用了一個畸形的後視。

正確的正則表達式看起來像這樣:(?<=email=)[^&]+(?=&)

這裏是一個sample program有固定的工作正則表達式:

Imports System.Text.RegularExpressions 
Module VBModule 

Sub Main() 
    Dim htmlPage As String = "asdkl3njkln1mlnmlaskjenr&[email protected]&asd345d&password=example&asd986asn" 
    Dim token As String = Regex.Match(htmlPage, "(?<=email=)[^&]+(?=&)").Value 
    Console.WriteLine(token) 
End Sub 
End Module 

輸出:[email protected]