如何提取R中由正斜杠分隔的数字?

时间:2019-01-10 21:54:46

标签: r regex

我正在尝试从字符串中提取格式为1 / 7、2 / 7,...的页码。在R中,我想使用以下输入

input <- "Some text 7/8\n"

并提取输出“ 7/8”,甚至提取数字7更好。我不是正规正则表达式用户,因此非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在正则表达式中,\d表示数字,+表示“一个或多个”。因此,模式"\d+"匹配一个或多个数字。我们可以将stringr::str_extract与该模式一起使用以提取数字-默认情况下,将提取模式匹配项(根据需要)。在R中使用正则表达式,我们需要使用第二个\对模式中的\进行转义:

str_extract("Some text 7/8\n", "\\d+")
#[1] "7"

在前面的文本可能包含数字的情况下,我建议进行两步处理-首先提取数字,然后提取/(只需将其添加到regex模式的末尾),然后替换提取了/,并留有空白。

result = str_extract("Some 2879 numbery 8972 text 7/8\n", "\\d+/")
result = str_replace(result, pattern = "/", replacemet = "")
result
#[1] "7"

如果您想担心前面的文本中可能包含小数的情况,我们将需要更加认真地考虑如何提取正确的分子。如果它始终是需要提取的最后一个分数,则可以使用stringi::stri_extract_last_regex代替stringr::str_extract。如果不是最后一个,那么您需要弄清楚一些逻辑,以找出要使用的哪个...