我想从字符串中提取大小,可以是:
a <- c("xxxxxxx 2.5 oz (23488)",
"xxxxx /1.36oz",
"xxxxx/7 days /20 ml")
我想要的结果:2.5 oz /1.36oz /20 ml
因为字符串不同,所以我想向后提取模式。也就是说,我想从字符串的末尾提取\\/*(\\d+\\.*\\d*)\\s*[[:alpha:]]+
的第一个外观。这样可以避免R从第一个字符串中提取23488
,从第三个字符串中提取/7 days
。
任何人都知道我如何实现这一目标? 谢谢!
答案 0 :(得分:3)
您可以使用
> a <- c("xxxxxxx 2.5 oz (23488)",
+ "xxxxx /1.36oz",
+ "xxxxx/7 days /20 ml")
> regmatches(a, regexpr("/?\\d+(?:\\.\\d+)?\\s*\\p{L}+(?!.*\\d(?:\\.\\d+)?\\s*\\p{L}+)", a, perl=TRUE))
[1] "2.5 oz" "/1.36oz" "/20 ml"
请参见regex demo。
详细信息
/?
-可选的/
\\d+
-1个以上数字(?:\\.\\d+)?
-可选的.
和1个以上的数字序列\\s*
-超过0个空格\\p{L}+
-1个以上字母(?!.*\\d(?:\\.\\d+)?\\s*\\p{L}+)
-不跟随
.*
-任意0个以上的字符,并且尽可能多\\d
-一个数字(?:\\.\\d+)?
-可选的.
和1个以上的数字序列\\s*
-超过0个空格\\p{L}+
-1个以上字母答案 1 :(得分:1)