3

正規表現が苦手です。大きな HTML ドキュメントの Netbeans のテキストを置き換えようとしていました。次のようなタグがいくつかあります。

<canvas width="62" height="23" style="width: 62px; height: 23px; top: 1px; left: 1px; ">

<canvas width="62" height="23" style="width: 62px; height: 23px; top: 1px; left: 1px; ">

<canvas width="67" height="23" style="width: 67px; height: 23px; top: 1px; left: 1px; ">

これらのタグをスペースまたは null 値に置き換えて削除したいと考えています。

で試しました

^<canvas width="[0-9]*" height="[0-9]*" style="width: [0-9]*px; height: [0-9]*px; top: [0-9]*px; left: [0-9]*px; ">

しかし、それは役に立ちませんでした。

誰でも私に解決策を教えてもらえますか?

4

4 に答える 4

8

正規表現を使用して html を解析するのは悪い考えですが、そうしなければならない場合は...

正規表現グループを使用してみてください:

^<canvas width="([0-9]*)" height="([0-9]*)" style="width: ([0-9]*px); height: ([0-9]*px); top: ([0-9]*px); left: ([0-9]*px); ">$

したがって、最初のグループを $1 などで参照できます。

^ と $ を使用している場合は、複数行フラグについて覚えておいてください

于 2012-08-01T07:35:57.473 に答える
0

^行の先頭から検索を強制的に開始する行の先頭の境界マッチャーを除いて、正規表現は問題ないように見えると思います。したがって、ターゲットタグが行を開始しない場合、それらはマッチャーによって検出されません。

ターゲットタグがドキュメント内のどこにでも見つかり、正規表現が保持したいものと一致する可能性がない場合は、^境界マッチャーを削除し、「検索」を使用して機能することをテストしてから、「 「置換」または「すべて置換」。

于 2012-08-01T19:23:06.973 に答える
0

私は解決策を見つけました。

私はこれで試してみましたが、うまくいきました。

<canvas (?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>

私の場合、「canvas」の代わりに任意の html タグに使用できます。

于 2012-08-02T17:46:40.017 に答える
0

式は、行の前に空白がない場合にのみ機能します。代わりに次の式を使用してください。

^[ \t]?<canvas width="[0-9]*" height="[0-9]*" style="width: [0-9]*px; height: [0-9]*px; top: [0-9]*px; left: [0-9]*px; ">

[編集] 式の前にテキストがある場合は、先頭のキャレット (^) を削除する必要があります。

于 2012-08-01T09:00:58.683 に答える