[英]VB.net basic RegEx problems
您好,我正在嘗試在一些HTML源代碼中保存來自輸入標簽的值。 標簽看起來像這樣:
<input name="user_status" value="3" />
我將頁面源包含在變量(pageSourceCode)中,需要計算一些正則表達式來獲取值(在本示例中為3)。 到目前為止,我有:
Dim sCapture As String = System.Text.RegularExpressions.Regex.Match(pageSourceCode, "\<input\sname\=\""user_status\""\svalue\=\""(.*)?\""\>").Groups(1).Value
大部分時間都可以正常工作,但是此代碼用於處理來自多個站點(使用同一平台)的源代碼,有時輸入標簽中還包含其他屬性,或者它們的順序不同,例如:
<input class="someclass" type="hidden" value="3" name="user_status" />
我只是不了解正則表達式不足以應付這些情況。
任何幫助,非常感謝。
附言:盡管我正在尋找這個問題的具體答案(如果有可能),那么指向良好的正則表達式教程的指針也將是不錯的選擇
謝謝
如果您的input
標簽從不包含尖括號,則可以搜索<input[^>]*\\bvalue="([^"]+)"
。
[^>]*
匹配任意數量的字符,但>
除外,這可以防止正則表達式在標簽之間意外匹配。
\\b
確保我們只匹配value
而不匹配x_value
。
編輯:
如果只想查看name="user_status"
input
標簽,則可以使用附加的超前斷言來實現 :
<input(?=[^>]*name="user_status")[^>]*\bvalue="([^"]+)"
在VB.NET中:
ResultString = Regex.Match(SubjectString, "<input(?=[^>]*user_status=""name"")[^>]*\bvalue=""([^""]+)").Groups(1).Value
可以在http://www.regular-expressions.info上找到一個很好的教程。
假設這是一個ASP.Net頁面,而不是您無法控制的某些外部HTML,則更好的解決方案是直接訪問控件。
將一個ID字段添加到您的輸入控件中,並添加一個runat =“ server”,就像這樣。
<input id="user_status" runat="server" class="someclass" type="hidden" value="3" name="user_status" />
您可能可以擺脫“名稱”字段。 通常與ID字段相同,ID是更好的選擇。 如果需要,您實際上可以同時具有ID和Name字段,並且它們都可以是相同的值。
在后面的代碼中,您可以通過ID訪問值,而無需使用正則表達式。
Me.user_status.value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.