簡體   English   中英

VB.net RegEx基本問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM