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>

負の後読みの追加

一部の入力が正しく閉じられている可能性がある場合は、負の後読みを追加できます

(<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 に答える