r - 正则表达式将逗号替换为点分隔符
问题描述
我正在尝试将逗号分隔符替换为数字中的点分隔符(反之亦然),而行可能有其他点和逗号。我尝试使用 gsub(),但不知道如何阻止它将替换模式识别为字符串。
例如,假设我有一条线
`Today I bought apples, oranges for 3,55 dollars`
我想以价格将逗号分隔符替换为点分隔符:
`Today I bought apples, oranges for 3.55 dollars`
一种天真的gsub
方法不起作用,因为我想:
`gsub('[[:digit:]],[[:digit:]]',
'[[:digit:]][.][[:digit:]]',
'Today I bought apples, oranges for 3,55 dollars')`
这显然给出了[1] "Today I bought apples, oranges for [[:digit:]][.][[:digit:]]5 dollars"
,即 gsub 将替换视为字符行。
除了向gsub()
. 那我能做什么?我想,也许我可以写一个函数来匹配这个模式,然后基本上替换,
到.
这个模式里面,然后把它放回句子中。但是,我希望有一个更短的解决方案来解决这样的问题。有任何想法吗?
解决方案
您可以使用捕获组并在替换中引用它们:
gsub("(\\d+),(\\d+)", "\\1.\\2", "Today I bought apples, oranges for 3,55 dollars")
# [1] "Today I bought apples, oranges for 3.55 dollars"
推荐阅读
- nginx - 在 auth_request url 位置设置 request_uri 标头
- io - Why the Scylla did not use cgroup blkio for I/O scheduler?
- php - 在没有用户重定向的情况下集成 Oauth - PHP/Adobe Sign
- javascript - 如何使用 lodash 将键值对添加到树结构对象
- c# - 我如何才能返回到我的 C# 窗口窗体设计
- c# - 如何为各种实现创建通用接口?
- kubernetes - Kubernetes UI仪表板没有cpu和内存使用信息
- wordpress - 使用布尔自定义字段对 meta_query 进行排序
- android - 将多个Fragment填充的数据保存在一起
- ajax - 第二个ajax调用返回404