0

大きなhtmlファイルのどこか:

<td headers="fee" style="cursor:pointer;" onclick="toggle('detailinfo088180');">
            $675.00 
        </td>

blabla<br><em>$650</em>">blabla/a>
    </td>
  </tr>

grepコマンドの後に必要なのは「675.00」の番号だけです。$ [0..9]。*のような正規表現を試しましたが、機能しません。

ありがとう、

4

3 に答える 3

1

これを試して

grep -e "\$[0-9]\{1,\}\.[0-9]\{2\}"

パターンによく一致するように「$」を付けました。grepが一致した後で削除して、別の操作をパイプすることができます。

数値のみを抽出する必要がある場合は、grepではなくperlを使用することを決定できます。

perl -ne '/\$([0-9]+\.([0-9]+))/ && print "$1\n"' < yourfile
于 2012-04-05T05:31:09.093 に答える
1

-範囲を示さないようにハイフンを使用する必要が..あります。$また、リテラルは行末を意味するため、エスケープする必要があります。

これはそれを見るはずです: grep "\$[0-9]+"

于 2012-04-05T05:31:14.863 に答える
0

これは、その''の内部HTMLから数値を抽出するために機能します。

/[0-9.]+/

問題の他の部分は、価格が含まれるHTMLを取得することです。より完全な例を次に示します。

<html>
<head>
<script>
    function toggle(e,id) { 
        val = parseFloat(e.innerHTML.match(/[0-9.]+/));
        // Another method:
        // val = parseFloat(e.innerHTML.match(/\$([0-9.]+)/)[1]);
        alert(val);
    }
</script>
</head>
<body>

<table border=1><tr>
<td headers="fee" style="cursor:pointer;" onclick="toggle(this,'detailinfo088180');">
   $675.04 
</td>

blabla<br><em>$650</em>">blabla/a>
    </td>
  </tr>

</table>
</body>
</html>

次の点に注意してください。

  • このtoggle()関数は、実際にクリックされた要素である追加のパラメーターを取ります。(クリックした要素から価格を抽出したい場合)
  • これが必要な場合に備えて、より制限的な(番号の前に「$」を付ける必要がある)別の正規表現を提供しました。この式は、キャプチャ( " (..)")を使用して文字列を照合し、文字列全体ではなく文字列の一部を抽出します。

正規表現がどのように機能するかについて詳しく知りたい場合は、こちらをお試しください。またはGoogle。

于 2012-04-05T05:25:07.963 に答える