5

我在包含字符的数据集中有一些字符串

\x96
\x92

和别的。

我不知道如何在 R 中为它们 grep。
我尝试过使用

pattern="\x96"
pattern="\\x96"
pattern="x96"

但无济于事。

是否有处理此类字符的特定方法,特别是在 R.


** 更新 ** 根据评论中的建议,perl=TRUE允许 grep 工作

任何人都可以对正在发生的事情提供一个可靠的解释吗?

会话信息,如果相关

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C         LC_TIME=C            LC_COLLATE=C         LC_MONETARY=C        LC_MESSAGES=C        LC_PAPER=C           LC_NAME=C            LC_ADDRESS=C        
[10] LC_TELEPHONE=C       LC_MEASUREMENT=C     LC_IDENTIFICATION=C 

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_0.9.3    RMySQL_0.9-3     DBI_0.2-5        stringr_0.6.1    data.table_1.8.6
4

1 回答 1

2

R 支持几种不同类型的正则表达式。默认为 POSIX ERE(扩展正则表达式),这是 grep 和其他标准 posix 工具中的默认值。但是 R 中的 POSIX ERE 引擎目前不支持转义十六进制字符代码:

使用反斜杠转义非元字符取决于实现。当前实现将 \a 解释为 BEL,\e 解释为 ESC,\f 解释为 FF,\n 解释为 LF,\r 解释为 CR,\t 解释为 TAB。(请注意,这些将由 R 的解析器以文字字符串解释。)

请参阅R 中使用的正则表达式

设置 perl=TRUE 将 R 用于处理正则表达式的引擎更改为 PCRE(与 perl 兼容的正则表达式)。PCRE 支持转义的十六进制字符代码——瞧,你的正则表达式现在可以工作了。

于 2013-02-18T07:47:56.173 回答