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

extract multiple numbers from a string and replace the whole string with a new string containing the numbers in r

我有如下字符串:

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

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

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

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

您的正则表达式已关闭 - 您在第一个数字和 Day 之间遗漏了一个 space,在这种情况下模式不匹配,因此不会进行替换。尝试:

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