我想提取字符串中两侧有两个标记/模式的所有数字。然而,R 中的正则表达式是我的祸根。
我有这样的事情:
string <- "<img src='images/stimuli/32.png' style='width:341.38790035587186px;height: 265px;'><img src='images/stimuli/36.png' style='width:341.38790035587186px;height: 265px;'>"
marker1 <- "images/stimuli/"
marker2 <- ".png"
Run Code Online (Sandbox Code Playgroud)
想要这样的东西
gsub(paste0(".*", marker1, "*(.*?) *", marker2, ".*"), "\\1", string)
[1] "32" "36"
Run Code Online (Sandbox Code Playgroud)
不过我得到这个:
[1] "32"
Run Code Online (Sandbox Code Playgroud)
PS 如果有人有一个很好的指南来理解正则表达式如何在这里工作,请告诉我。我很确定答案很简单,但我只是不明白正则表达式:(
您可以使用
string <- "<img src='images/stimuli/32.png' style='width:341.38790035587186px;height: 265px;'><img src='images/stimuli/36.png' style='width:341.38790035587186px;height: 265px;'>"
regmatches(string, gregexpr("images/stimuli/\\K\\d+(?=\\.png)", string, perl=TRUE))[[1]]
# => [1] "32" "36"
Run Code Online (Sandbox Code Playgroud)
注意:如果可以有任何东西,而不仅仅是数字,您可以替换\\d+为.*?。
提取输入中找到的所有匹配项regmatches。gregexpr
正则表达式匹配:
images/stimuli/- 文字字符串\K- 匹配重置运算符丢弃迄今为止匹配的所有文本\d+- 1+ 位数字(?=\.png)- 子.png字符串(.是特殊字符,需要转义)。| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |