【问题标题】:R: Perl Regex for unicode character stringR:用于 unicode 字符串的 Perl 正则表达式
【发布时间】:2016-01-28 21:10:14
【问题描述】:

我正在尝试摆脱在我的数据中散布的一些 unicode 字符串。

Sample data <- "['oguma', 'makeup', u'\u0e27\u0e34\u0e15\u0e32\u0e21\u0e34\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e47\u0e01', 'jeban',]"

我想捕获以 u'\ 开头的所有内容,并在末尾包含逗号。

我想从以下开始:

gsub("u/\\/\'....

+ 包括下一个逗号在内的所有内容,但我不确定如何说第二部分。

结果:

Sample data <- "['oguma', 'makeup', 'jeban',]"

建议?

【问题讨论】:

  • 您希望结果为"['oguma', 'makeup', u'', 'jeban',]" 吗?看看this demo。问题是,这些不是文字代码,它们是 ASCII 范围之外的字符。
  • 我不知道 R 使用哪个引擎,但它不是 Perl 的(因为只有 perl 使用它)。也许是PCRE?调整标签。

标签: regex r pcre gsub


【解决方案1】:

这是一个正则表达式解决方案,它将删除以u' 开头的子字符串,后跟非 ASCII 字符(1 个或多个)并以逗号(可选,1 或 0)和空格(也可选,0 或更多):

data <- "['oguma', 'makeup', u'\u0e27\u0e34\u0e15\u0e32\u0e21\u0e34\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e47\u0e01', 'jeban',]"
gsub("u'[^[:ascii:]]+',?\\s*", "", data, perl=T)
## => [1] "['oguma', 'makeup', 'jeban',]"

IDEONE demo

请注意,您示例中的 \u0e27 类子字符串只是非 ASCII 字符,如果您打印字符串,它们将正确显示为这些字母/符号(此处为 u'วิตามินหน้าเด็ก',泰语表示“维生素孩子”——谷歌翻译)。

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2010-09-26
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多