我需要提取在一组qoutes之间的字符串的特定部分,并且我需要做到的是不获取也在qoutes之间的字符串的后续部分。
例如,如果我只想提取此标记标签中viewBox属性之后的qoutes之间的值;
"<svg height=\"512pt\" viewBox=\"-9 0 512 512\" width=\"512pt\" xmlns=\"http://www.w3.org/2000/svg\">"
我希望能够提取各种不同的符号,因此我尝试使用stringer中的[:print:]命令。但是我无法将提取限制为所需的qoutes集。而且,viewBox只是一个示例,因此对此没有特定的解决方案。
string <- "<svg height=\"512pt\" viewBox=\"-9 0 512 512\" width=\"512pt\" xmlns=\"http://www.w3.org/2000/svg\">"
string %>%
str_extract("(?<= viewBox=\")[:print:]+(?<!\" )")
当前结果是;
"-9 0 512 512\" width=\"512pt\" xmlns=\"http://www.w3.org/2000/svg\">"
期望的结果是:
"-9 0 512 512"
答案 0 :(得分:1)
在正则表达式查找后,我们可以匹配非双引号("
)的字符
library(stringr)
str_extract(string, '(?<=viewBox=")[^"]+')
#[1] "-9 0 512 512"