正则表达式删除R中的特定多字节字符

时间:2016-11-25 08:24:30

标签: r regex

我正在尝试删除R中的特定多字节字符。

Multibyte <- "Sungpil_한성필_韓盛弼_Han"

Multibyte的语言结构是“English_Korean_Chinese_English”我想要删除的只是韩语单词或仅中文单词(不是两者)。

期望的结果是:

Sungpil_한성필__Han   # Chinese characters were removed. 

Sungpil__韓盛弼_Han   # Korean characters were removed.

使用gsub有一种简单的方法吗?我只知道一种获取英文字符的方法。

gsub("[^A-Za-z_]", "", Multibyte)
[1] "Sungpil___Han"

2 个答案:

答案 0 :(得分:2)

回答问题本身,是的,您可以使用PCRE正则表达式和Unicode属性类gsub仅使用\p{Hangul}来匹配韩语字符,使用\p{Han}来匹配中文字符:

> Multibyte <- "Sungpil_한성필_韓盛弼_Han"
> gsub("\\p{Hangul}+", "",Multibyte, perl=TRUE)
[1] "Sungpil__韓盛弼_Han"
> gsub("\\p{Han}+", "",Multibyte, perl=TRUE)
[1] "Sungpil_한성필__Han"

请参阅R online demo

但是,如果您具有输入文本的特定结构,请使用其他解决方案。

答案 1 :(得分:1)

我们可以尝试CompletableFuture<Void> mt = supplyAsync(MetadataLoginUtil::login) .exceptionally(e -> { System.out.println(e); return null; } ) .thenAccept(e -> System.out.println(e));

sub