正则表达式替换为

时间:2018-06-25 23:09:52

标签: regex content-grabber

我有一段代码正在抓取格式错误的价格。我只想使用正则表达式来清理它。
他们正在发送

$ 3 58

我想删除$和空格,并用替换美元和美分之间的空格。所以我得到:

3.58

我可以摆脱$和前导空格,但我真的被替代所困。 我知道

  Regex (.*) returns everything
  Regex \ (.*) returns '3 58'

但是我真正想要的是

  3.58

我正在尝试在一个称为内容抓取程序的程序中执行此操作,因此我只能访问正则表达式。

4 个答案:

答案 0 :(得分:0)

您可以使用2个捕获括号。

\ D *(\ d +)\ D *(\ d +)

\ 1. \ 2

答案 1 :(得分:0)

您似乎所需要的只是capture两个用空格分隔的数字块,并使用将带点将组连接起来的命令:

dragParts.add(DragBox(
  key: GlobalKey(),
  startPosition: Offset(0.0, 0.0),
  color: Colors.red,
  label: "Box1",
  bringToTop: this.bringToTop,
));

dragParts.add(DragBox(
  key: GlobalKey(),
  startPosition: Offset(50.0, 50.0),
  color: Colors.red,
  label: "Box2",
  bringToTop: this.bringToTop,
));

dragParts.add(DragBox(
  key: GlobalKey(),
  startPosition: Offset(100.0, 100.0),
  color: Colors.blue,
  label: "Box3",
  bringToTop: this.bringToTop,
));

由于(\d+) (\d+) return $1.$2 命令仅返回匹配的内容,因此无需在输入中匹配其他任何内容。

return模式将一个或多个数字匹配并捕获到组1((\d+) (\d+))中,然后匹配一个空格($1可用于匹配1+个空白字符),并且然后\s+模式再次匹配并捕获到第2组((\d+))一个或多个数字。

答案 2 :(得分:0)

console.log(' $ 1 20'.replace(/[^0-9\ .]/g, '').trim().replace(/\ /g, '.'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 3 :(得分:0)

$ 3 58中,您可以匹配要在替换中删除的内容,并捕获要保留的内容。

匹配一个美元符号\$,然后匹配一个或多个空格字符\s+,并捕获一个或多个数字(\d+)

在替换使用组1中。组2。例如$1.$2

\$\s+(\d+)\s+(\d+)