我有以下字符串:

"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" 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!