正则表达式 - 只获得一些数字

时间:2014-04-03 14:46:06

标签: regex

我有以下文字:

<td width="300">38.625,00</td>

我只想要输出:38625

我正在使用

[\d,]+

返回30038625,00

我怎样才能选择“第二位和第三位”?

提前谢谢

2 个答案:

答案 0 :(得分:1)

 echo '<td width="300">38.625,00</td>' \
  | sed -nEe 's/.*[^0-9.]([0-9.]+),[0-9]{2}.*/\1/;s/[^0-9]//p'

当然,这是两个替换,但它们都基于正则表达式。

如果您的数字格式为##.###,##,则可以直接处理,只需一次正则表达式替换:

echo '<td width="300">38.625,00</td>' \
 | sed -nEe 's/.*[^0-9]([0-9]+)\.([0-9]+).*/\1\2/p'

答案 1 :(得分:0)

不确定您的情况,但是如果您想要替换 -

查找:(?<=>)(\d+)\.(\d+)(?:,\d*)?(?=</td>)
替换:$1$2

 (?<= > )
 ( \d+ )                 # (1)
 \.
 ( \d+ )                 # (2)
 (?: , \d* )?
 (?= </td> )