如何在R语言中为化学式内的数字添加~符号(gsub用法)
嘿,这个问题其实只要找准目标数字的特征就能轻松解决啦!我们需要区分两种数字:一种是化学式里元素符号后的下标数字(就是要加~的),另一种是数值里跟在单位前的数字(比如200mL里的200,不用动)。
观察一下要处理的数字:它们全都是紧跟在化学元素的字母(不管大小写)后面的,而不需要处理的数字要么在字符串开头,要么前面是小数点这类非字母字符。
那用R的gsub结合Perl风格的正则表达式就能精准匹配,代码如下:
# 原始输入 chemical <- "200mL of Ac2O3, 3.5mml of AgBF4, 10.0ml of AgBr, 100ml of AgCl3Cu2" # 执行替换 formatted_chemical <- gsub("(?<=[A-Za-z])(\\d+)", "~\\1~", chemical, perl = TRUE) # 输出结果 print(formatted_chemical)
我来拆解一下这个正则表达式的逻辑:
(?<=[A-Za-z]):这是正向预查,用来确保我们要匹配的数字前面必须是任意大小写字母(也就是化学元素符号的最后一个字符)(\\d+):捕获一个或多个连续数字,用括号分组是为了后面能引用这个匹配到的数字"~\\1~":把捕获到的数字替换成~数字~的格式,\\1就代表刚才捕获到的数字内容
运行这段代码后,你就能得到期望的输出:
"200mL of Ac2O3, 3.5mml of AgBF4, 10.0ml of AgBr, 100ml of AgCl3Cu2"
内容的提问来源于stack exchange,提问作者Connie
相关产品推荐
相关产品推荐

