我在这里查看了很多关于 SO 的帖子,其中包含有关 REGEX 模式的建议,以从括号中获取文本。但是,根据我的研究,我找不到有效的解决方案。
例如,我查看了以下内容:R - 正则表达式提取包含关键字的括号之间的文本 https://stackoverflow.com/questions/69958102/r-regular-expression-to-extract-text-between-parentheses-that-contain-keyword, 在 R 中提取括号中的文本 https://stackoverflow.com/questions/28955367/extract-text-in-parentheses-in-r, 正则表达式挑选括号之间的一些文本[重复] https://stackoverflow.com/questions/13498843/regex-to-pickout-some-text-between-parenthesis
按照以下顺序,以下是最常见的答案解决方案(经过一些修改):
pattern1= '\\([^()]*[^()]*\\)'
pattern2= '(?<=\\()[^()]*(?=\\))'
pattern3= '.*\\((.*)\\).*'
all_patterns = c(pattern1, pattern2, pattern3)
我使用过以下内容:
sapply(all_patterns , function(x)stringr::str_extract('I(data^2)', x))
\\([^()]*[^()]*\\) (?<=\\()[^()]*(?=\\)) .*\\((.*)\\).*
"(data^2)" "data^2" "I(data^2)"
这些似乎都只抓取括号内的字符,那么我怎样才能抓取括号内的字符呢?
预期输出:
data
With str_extract
,它将提取模式中匹配的所有字符。相反,使用正则表达式查找来匹配一个或多个不是^
或右括号 ()
) ([^\\^\\)]+
) 接在左括号 ((?<=\\()
- 这些被转义了(\\
)因为它们是元字符
library(stringr)
str_extract('I(data^2)', '(?<=\\()[^\\^\\)]+')
# [1] "data"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)