我有以下字符串:
"UNKNOWN_{_requestID___b9b6bcc4-c163-45d7-82d9-423a96cf5fe1_,_deviceID___9c84f871-9e95-45d5-9335-12e7d42b96a0_}_2018-08-15-15-43-01-296_529307b7-6316-4cdc-ab53-2e1158c651c6.txt"
我想提取 529307b7-6316-4cdc-ab53-2e1158c651c6
部分(_ 和 .txt 之间的最后部分)。
这是我使用正则表达式尝试做的事情:
^\_\w\.txt
但运气不好,我一直在玩这个,请指教策略是什么以及如何“攻击”这个。
请您参考如下方法:
你可以使用
sub("^.*_(.*)\\.txt$", "\\1", x)
参见 regex demo
sub
将执行单个 seasrch 和替换操作。如果字符串符合以下条件,它将找到一个匹配项:
^
字符串开始.*_
- 任何 0+ 个字符,尽可能多,直到最后一个_
(.*)
- 任何 0+ 个字符(捕获到第 1 组,稍后用替换模式中的\1
引用),尽可能多,向上包括...\\.txt$
-.txt
(.
必须转义以匹配文字点)在字符串的末尾 ($
).
R demo :
x <- "UNKNOWN_{_requestID___b9b6bcc4-c163-45d7-82d9-423a96cf5fe1_,_deviceID___9c84f871-9e95-45d5-9335-12e7d42b96a0_}_2018-08-15-15-43-01-296_529307b7-6316-4cdc-ab53-2e1158c651c6.txt"
sub("^.*_(.*)\\.txt$", "\\1", x)
## => [1] "529307b7-6316-4cdc-ab53-2e1158c651c6"