【发布时间】:2017-12-14 17:38:34
【问题描述】:
我需要从如下所示的数据中提取毫克数量:
(100) x 10mg zepose valium ..(cipla in strips)
-- 20x2mg -- diclazepam
(10) clonazepam 2mg / roche rivotril
...
在 R 中,我使用这个正则表达式来删除“mg”之后的所有文本:
dataset$quantity <- gsub('mg.+?$','mg',dataset$quantity)
输出是这样的:
(100) x 10mg
-- 20x2mg
(10) clonazepam 2mg
如何在保留数量的同时删除“mg”之前的文本?范围从1mg到200mg,所以从一位数到三位数。
有时在 mg 数字之前有空格,但并非总是如此。然而,一种模式是在 mg 数量之前永远不会有数字(除非用空格分隔)。
基于我对正则表达式的有限理解,因此我正在寻找一种可以删除 1-3 位数字和“mg”之前的所有字符的代码。我环顾四周,找不到我需要的东西。
编辑:
我想要的输出是:
10mg
2mg
2mg
请忽略文中指的是 1000mg (100 x 10mg)、40mg (20 x 2mg) 等。我认为我将不得不手动进行这些计算。
【问题讨论】:
-
不太清楚你想要的输出是什么。例如,您想要
(100) x 10mg还是只是10mg?您能否在问题中提供所需的输出? -
如果数字既可以是浮点数也可以是整数,请使用
sub('.*?(\\d[0-9.]*\\s*mg).*','\\1',x)