我正在尝试从字符串中提取格式为1 / 7、2 / 7,...的页码。在R中,我想使用以下输入
input <- "Some text 7/8\n"
并提取输出“ 7/8”,甚至提取数字7更好。我不是正规正则表达式用户,因此非常感谢您的帮助。
答案 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
。如果不是最后一个,那么您需要弄清楚一些逻辑,以找出要使用的哪个...