在提取带有+/-
符号的数字时遇到麻烦。
我的示例字符串就是这样
x <- c("alexander c/d=(+5/-1)","maximus a/b=(-4/1)", "thor e/d=(+3/-2)")
我尝试提取正斜杠/
前后带有其符号的数字。
所以我尝试了
before_slash=sub(".*=\\((-?\\d+).*","\\1", x, perl = TRUE)
给出
"alexander c/d=(+5/-1)" "-4" "thor e/d=(+3/-2)"
和
after_slash=sub("^.*/(-?\\d+)","\\1", x, perl = TRUE)
> after_slash
[1] "-1)" "1)" "-2)"
OTH,预期输出
before_slash
+5 -4 +3
after_slash
-1 1 -2
如何解决此问题?
答案 0 :(得分:2)
regmatches(x, regexpr("[-+]?\\d+(?=/)", x, perl=TRUE))
str_extract(x, "[-+]?\\d+(?=/)")
详细信息
[-+]?
-可选的-
或+
\d+
-1个或更多数字(?=/)
-当前位置的右边必须有一个斜杠regmatches(x, regexpr("/\\K[-+]?\\d+", x, perl=TRUE))
str_extract(x, "(?<=/)[-+]?\\d+")
请参见R demo。
详细信息
/
-斜杠\K
-匹配重置运算符会丢弃到目前为止已匹配的所有文本[-+]?
-可选的-
或+
\d+
-1个或更多数字