微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式替换R

如何解决使用正则表达式替换R

尽管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,replacement = "^",perl = TRUE)
stringr::str_replace_all(my_string,patt,"^")

没有任何效果。您对替换上标有任何想法吗?

编辑:

我在Windows上工作。我试图在Linux上运行这些命令,但它确实起作用。似乎必须与系统设置或R会话设置有关。

解决方法

将其转换为ASCII,替换并转换为UTF8:

> utf8ToInt("²")
[1] 178
> utf8ToInt("^")
[1] 94
> intToUtf8(sapply(utf8ToInt(my_string),function(x) ifelse(x == 178L,94L,x)))
[1] "4x1^+1x1^"
,

您可以使用

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)

或者,像{p>

gsub

请参见R demo onlineregex demo

,

您可以尝试这种方式

library(stirngr)
str <- "4x1²+1x1²"
str_replace_all(str,"²","\\^")
#[1] "4x1^+1x1^"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?