从字符串中提取多个数字,并用包含r中的数字的新字符串替换整个字符串

时间:2018-02-03 04:33:47

标签: r regex stringr

我有一个如下字符串:

s = 'regimen A1 Cycle 3 Day 5 treatment B1 '

我需要做的是将整个字符串替换为C3D5(第3天第5天)。我想知道如何使用正则表达式? 我试过了:

str_replace(s, '.*Cycle\\s+(\\d+)Day\\s+(\\d+).*', 'C\\1D\\2' )

我得到的是原始字符串。谁能告诉我我做错了什么?有任何优雅的方式吗?

1 个答案:

答案 0 :(得分:1)

您的正则表达式已关闭 - 您错过了第一个数字和Day之间的空格,在这种情况下模式不匹配,因此不会发生替换。尝试:

str_replace(s, '.*Cycle\\s+(\\d+)\\s+Day\\s+(\\d+).*', 'C\\1D\\2' )
#                                ^^^^
# [1] "C3D5"