尽管有很多关于 R 中的正则表达式的示例和问题,但它们似乎都不适合我的问题。在我的项目中,我正在努力处理像“4x1²+1x1²”这样的字符串。上标字符对我来说似乎很有问题。
我的目标:从4x1²+1x1²
我想要得到4x1^+1x1^
。只需将所有上标替换为“^”即可。容易,是吗?
我找到了“\p{No}”的模式,但恐怕它在 R 中不起作用或者我使用错误。
我尝试过的:
my_string <- "4x1²+1x1²"
patt <- "\\p{No}"
gsub(patt, my_string, replacement = "^") # error
gsub(patt, my_string, replacement = "^", perl = TRUE)
stringr::str_replace_all(my_string, patt, "^")
什么都不起作用。您对如何替换上标有什么想法吗?
EDIT:
我正在 Windows 上工作。我尝试在 Linux 上运行这些命令,结果成功了。看来它一定与系统设置或R会话设置有关。
您可以使用
my_string <- "4x1²+1x1²"
gsub("[⁰¹²³⁴⁵⁶⁷⁸⁹]", "^", my_string)
或者,使用\u{XXXX}
表示法(在 Windows 中测试):
gsub("[\u{2070}\u{00B9}\u{00B2}\u{00B3}\u{2074}-\u{2079}]", "^", my_string)
或者,基于 PCREgsub
like
gsub("[\\x{2070}\\x{B9}\\x{B2}\\x{B3}\\x{2074}-\\x{2079}]", "^", my_string, perl=TRUE)
See the R 在线演示 https://ideone.com/UPrQDp和正则表达式演示 https://regex101.com/r/ySzNUM/2.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)