3

我有如下代码:

<form>
    <input name="whatever">
    <input name="whatever2">
</form>

为了让 Visual Basic .NET 中的 XML 解析器能够解析它,我需要关闭每个输入标记。像这样:

<input></input>

我如何将它附加到我拥有的 HTML 字符串中的每个输入中?通过使用正则表达式?

Dim Method As New Regex("<input.*?>", RegexOptions.IgnoreCase)
For each Item as String in Method.Results("<form><input><input></form>")
    'Somehow append </input>
Next
4

1 回答 1

2

您可以使用一个非常简单的正则表达式来修复输入。您可以使用几种替换模式,具体取决于您希望元素的格式如何。

示例代码

Function FixInputElement(htmlMarkup As String)
    Return Regex.Replace(htmlMarkup, "(<input[^>]*)(>)", "$1/$2", RegexOptions.IgnoreCase)
End Function

替换模式

Replacement     Input              Output
$1/$2           <input id="in1">   <input id="in1"/>
$1 /$2          <input id="in2">   <input id="in2" />
$1/$2</input>   <input id="in3">   <input id="in3"></input>

添加负面的Lookbehind

如果有可能某些输入被正确关闭,您可以在后面添加一个否定的lookbehind

(<input[^>]*)((?<!/)>)

带有否定后视的输出

Input                         Output
<input id="in1">              <input id="in1" />
<input id="in2">              <input id="in2" />
<input id="in3-dontfix" />    <input id="in3-dontfix" />
于 2013-08-18T23:44:13.693 回答