R:Unicode 字符串的 Perl 正则表达式

R: Perl Regex for unicode character string

我正在尝试删除散布在我的数据中的一些 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',]"

建议?

这是一个正则表达式解决方案,它将删除以 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 字符 - 如果您打印字符串 - 将正确显示为那些 letters/symbols(此处,u'วิตามินหน้าเด็ก',泰语 "vitamins for kids" - Google 翻译)。