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()函数需要一个额外的参数,即实际点击的元素。(假设您希望从单击的元素中提取价格)
  • 我提供了另一个更严格的正则表达式(必须在数字前面有一个“$”),以防这是您需要的。该表达式使用捕获 (" (..)") 来匹配字符串并提取字符串的一部分而不是整个字符串。

如果您想了解更多关于正则表达式如何工作的信息,请在此处尝试。或谷歌。

于 2012-04-05T05:25:07.963 回答