- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从字符串向量中删除非字母字符。我以为 [:punct:]
分组会覆盖它,但它似乎忽略了 +
。这是否属于另一组字符?
library(stringi)
string1 <- c(
"this is a test"
,"this, is also a test"
,"this is the final. test"
,"this is the final + test!"
)
string1 <- stri_replace_all_regex(string1, '[:punct:]', ' ')
string1 <- stri_replace_all_regex(string1, '\\+', ' ')
最佳答案
POSIX 字符类需要包装在字符类中,正确的形式是 [[:punct:]]
.不要将 POSIX 术语“字符类”与通常称为正则表达式字符类的东西混淆。
这个 ASCII 范围内的 POSIX 命名类匹配所有非控件、非字母数字、非空格 字符。
ascii <- rawToChar(as.raw(0:127), multiple=T)
paste(ascii[grepl('[[:punct:]]', ascii)], collapse="")
# [1] "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
虽然如果一个 locale
有效,它可以改变的行为[[:punct:]]
...
R 文档 ?regex
声明如下:某些命名的字符类是预定义的。它们的解释取决于语言环境(参见 locales );解释是 POSIX 语言环境的解释。
开放组 LC_TYPE definition for punct说:
Define characters to be classified as punctuation characters.
In the POSIX locale, neither the
<space>
nor any characters in classes alpha, digit, or cntrl shall be included.In a locale definition file, no character specified for the keywords upper, lower, alpha, digit, cntrl, xdigit, or as the
<space>
shall be specified.
然而,stringi 包似乎依赖于ICU语言环境是 ICU 中的一个基本概念。
使用 stringi 包,我推荐使用 Unicode Properties \p{P}
and \p{S}
.
\p{P}
匹配任何类型的标点字符。也就是说,它缺少 POSIX 类 punct 包含的九个字符。这是因为 Unicode 将 POSIX 认为是标点符号的内容分为两类,标点符号 和符号。这是\p{S}
的地方到位......
stri_replace_all_regex(string1, '[\\p{P}\\p{S}]', ' ')
# [1] "this is a test" "this is also a test"
# [3] "this is the final test" "this is the final test "
或退回到gsub
来自 base R,它处理得很好。
gsub('[[:punct:]]', ' ', string1)
# [1] "this is a test" "this is also a test"
# [3] "this is the final test" "this is the final test "
关于regex - R/正则表达式与 stringi/ICU : why is a '+' considered a non-[:punct:] character?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45070628/
我正在尝试完成一些绘图,但不幸的是它会产生此错误以及一个空白窗口: ggplot(dt, aes(B, C),) + geom_point() + facet_grid(. ~ A) Error in
我正在使用 RStudio 在远程服务器上工作。此服务器无法访问 Internet。我想安装包“stringi”。我看过这个 tackoverflow article ,但是每当我使用命令时 inst
我最近开始处理自定义序列化/反序列化:https://stackoverflow.com/a/63846824/129805 我只想对JSON和RON使用此自定义的“字符串式”序列化(和des),而对
我正在尝试使用 renv::install() 安装包 stringi。 一般情况下,我会用 install.packages('stringi', configure.vars='ICUDT_DIR
我正在尝试调用 knit这告诉我它需要更新版本的 rmarkdown需要包stringi . 安装时stringi我收到以下错误: > install.packages("stringi") Inst
我正在尝试在 R 中安装 stringi 包,但安装从未完成。下载并编译后,我收到以下消息: Error in dyn.load(file, DLLpath = DLLpath, ...) : u
系统:macOS Sierra 10.12.6 Xcode:9.2 (2347) R:3.4.0 RStudio:1.1.383 我正在尝试安装最新版本的 stringi (1.1.6)。自从 Xco
我有数据,其中每一行都是一个人。我想制作一个随机生成的唯一 ID,以便在分析中识别它们。 这是一个示例数据框 df % mutate(UniqueID = do.call(paste0, Map(
我现在使用 stringi 包有一段时间了,一切正常。 我最近想将一些正则表达式放入一个函数中,并将该函数存储在一个单独的文件中。如果函数是从脚本加载的,代码就可以正常工作,但是当它被加载时,我没有得
目的 我试图使用 vif()来自 car 的函数R 包。 初始错误消息 当我第一次执行 vif(X) ,弹出错误信息如下: Error in vif(mod1) : could not find fu
我在 R 中有一个大型数据框,其中有一列看起来像这样,其中每个句子都是一行 data <- data.frame( datalist = c("anarchism is a wiki/polit
下一个我要断了string成句: library(NLP) # NLP_0.1-7 string 快速)和 openNLP (-> 质量)? 最佳答案 ICU 中的文本边界(在这种情况下,句子边界
请帮我在R中安装stringr和stringi包。结果是: install.packages("stringi") Installing package into ‘C:/Users/kozlovpy
我有一些字符串 string <- "abbccc" 我想将同一个字母的链替换为一个字母和该字母的出现次数。所以我想要这样的东西:“ab2c3” 我使用 stringi 包来做这个,但它并没有完全按照
例如,我有一些字符串实际上是用于创建表格的 HTML 代码 z MESA HIGH VICTORIES Team Score Parkfield High Demon
我们正在努力使一些 R 代码在生产环境中工作,作为其中的一部分,我们正在安装一些 R 包,如下所示: # Default directories and mirrors WORKING_DIR 应
最近使用 Appveyor 的构建不再有效。它在实际构建程序之前失败了,因为不知何故无法安装包 stringi。 本地一切正常,但我需要 Appveyor 的解决方法。有人有解决此问题的解决方案吗?
我想知道为什么我通过使用 gsub 和 stringi 获得两个不同的输出字符串。元字符“.”不包括 stringi 中的新行? stringi 是否“逐行”读取? 顺便说一下,我没有找到任何方法来使
在 Windows 10 上,RStudio。我试过使用命令 install.packages,但它总是出现以下消息: > install.packages ("stringi") There is
在 Windows 10 上,RStudio。我试过使用命令 install.packages,但它总是出现以下消息: > install.packages ("stringi") There is
我是一名优秀的程序员,十分优秀!