1

次の行を見つけるために使用できる正規表現が必要です。

<rect width='10px' height ='20px'/>
<rect width='20px' height ='22px'/>
<circle radius='20px' height ='22px'/>

それらを次の行に置き換えます。

<rect width='10px' height ='20px'></rect>
<rect width='20px' height ='22px'></rect>
<circle radius='20px' height ='22px'></circle>

ありがとうございました 。

4

4 に答える 4

1

polygenelubricants が指摘したように、これが何を達成するかはわかりませんが、これはあなたが探しているものでなければなりません:

<rect[^>]*/>

<circle[^>]*/>

自己完結型のタグに一致させたい場合は、Crozins ソリューションを検討する必要があります。

于 2010-06-26T17:38:18.053 に答える
1

このようなものを使用して#<([a-z]+)([^>]*)/>#、に置き換えることができます<$1$2></$1>。ただし、正規表現は、使用している正規表現エンジンによって異なる場合があります。

于 2010-06-26T17:40:44.403 に答える
1

sed 's/<\([a-z]*\) \([^\/>]*\)\/>/<\1 \2><\/\1>/'

あなたが望むことをします(この場合)

検索パターン: <\([a-z]*\) \([^\/>]*\)\/>

置換パターン: <\1 \2><\/\1>

于 2010-06-26T17:45:05.953 に答える
1

正規表現がこの仕事に適したツールだとは思いませんが、このようなものが「うまくいく」場合があります。

    String text =
        " <rect width='10px' height ='20px'/> \n" +
        " <rect width='20px' height ='22px'/> \n" +
        " <circle radius='20px' height ='22px'/> \n" +
        " <square/> <rectangle></rectangle> \n" +
        " <foo @!(*#&^#@/> <bar (!@*&(*@!#> </whatever>";
    System.out.println(
        text.replaceAll("<([a-z]+)([^>]*)/>", "<$1$2></$1>")
    );

上記の Java スニペットは以下を出力します。

 <rect width='10px' height ='20px'></rect> 
 <rect width='20px' height ='22px'></rect> 
 <circle radius='20px' height ='22px'></circle> 
 <square></square> <rectangle></rectangle> 
 <foo @!(*#&^#@></foo> <bar (!@*&(*@!#> </whatever>

正規表現はこれです(rubular.com も参照):

/<([a-z]+)([^>]*)\/>/

基本的に、グループ 1 のタグ名であると思われるものをキャプチャし/>、グループ 2 までのその他すべてをキャプチャして、これらのキャプチャされた文字列を置換で使用します。

参考文献

于 2010-06-26T17:47:26.487 に答える