【问题标题】:Find fractions strictly not preceded by certain characters查找严格不以某些字符开头的分数
【发布时间】:2021-08-30 18:32:02
【问题描述】:

我正在尝试查找前面没有单词后跟 / 的分数,例如 s2。我的代码不适用于该代码,但它可以捕获其他代码。你能帮忙修改正则表达式吗?期望值后跟_f。

s2="Virus/02/2013"
s3="Helium Nitrogen 10/10"
s4="Nitrogen Oxygen10/20"
s5="glycol,water,oxygen, 10/20/30"
concat=c(s2,s3,s4,s5)
stringr::str_replace_all(concat,"(?<!\\/)(?<!\\/)\\d*\\.?\\d+(\\s+)?\\/\\d*\\.?\\d+(\\s+)?(\\/\\d*\\.?\\d+(\\s+)?)?","")

s2_f="Virus/02/2013"
s3_f="Helium Nitrogen"
s4_f="Nitrogen Oxygen"
s5_f="glycol,water,oxygen"

【问题讨论】:

  • 是的,它是@akrun,我正在转换 b/c 这是正则表达式的一部分,但我现在删除了它
  • 我花了一段时间,但我想你是说你想要例如s2 将转换为 s2_f。所以你想消除所有分数,除了那些紧随其后的分数,例如“病毒/”

标签: r regex string


【解决方案1】:

我们可以匹配正则表达式查找以匹配小写字母 ((?&lt;=[a-z])) 后跟一个或多个空格、逗号 ([, ]+) 后跟任何 / 和数字 (\\d+) 和其他字符 (.*) 或 (|) 一个或多个数字和其他字符并替换为空白 ("")

sub("(?<=[a-z])(([, ]+\\/?\\d+.*)|(\\d+.*))", "", concat, perl = TRUE)

-输出

[1] "Virus/02/2013"       "Helium Nitrogen"   
[3] "Nitrogen Oxygen"     "glycol,water,oxygen"

【讨论】:

    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 2016-09-17
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多