R 如何将多个正则表达式放入gsub?

R 如何将多个正则表达式放入gsub?,r,R,我想删除不是字母、数字或空格的字符 我试过使用[:punct:][/code>但它会擦除波兰字母 给定textToClean,\p{L}将匹配任何字母,\s将匹配任何空格、制表符或换行符。如果我们用^来否定这一点,我们可以用“替换所有不匹配项: 请注意,数字也已删除。如果要保留数字,可以使用\p{p},它只匹配函数间: gsub("\\p{P}", "", textToClean, perl = TRUE) "polish letters ł Ł ż Ż ą Ą ę Ę ó Ó 43434

我想删除不是字母、数字或空格的字符

我试过使用
[:punct:][/code>但它会擦除波兰字母


给定
textToClean,
\p{L}
将匹配任何字母,
\s
将匹配任何空格、制表符或换行符。如果我们用
^
来否定这一点,我们可以用
替换所有不匹配项:

请注意,数字也已删除。如果要保留数字,可以使用
\p{p}
,它只匹配函数间:

gsub("\\p{P}", "", textToClean, perl = TRUE)
"polish letters ł Ł ż Ż ą Ą ę Ę ó Ó 43434   "

似乎默认的RE引擎将波兰语字符视为标点符号,但Perl引擎没有

gsub("[[:punct:]]", "", textToClean)
[1] "polish letters     ź Ź   ę Ę ó Ó ń Ń ć Ć 43434   "

gsub("[[:punct:]]", "", textToClean, perl=TRUE)
[1] "polish letters ł Ł ż Ż ź Ź ą Ą ę Ę ó Ó ń Ń ć Ć 43434   "

我将它归类为默认引擎中的错误。

尝试
“(\\d+\\S+\\W)”
。您可以在正则表达式中使用“|”来表示匹配这个或那个。不起作用。它现在返回空字符串。要使用
[:punct:][/code>它需要在字符类中,即
gsub(“[:punct:][]”,“”,textToClean)
是的,但它会剪切波兰语字母!我需要他们。我不能用波兰字母做一个字符串(复制和粘贴使它们成为英语)。像这样的东西应该是可行的,但我们需要知道如何在ASCII空间中识别波兰字符,而我不知道该怎么做<代码>gsub(“[^[:alpha:]| ^[:digit:],”,textToClean)
。或者,您可以列出要剪切的标点符号<代码>gsub(“[()!;:,@#$.%^&*]”,“”,textToClean)
gsub("[^\\p{L}\\s]+", "", textToClean, perl = TRUE)
"polish letters ł Ł ż Ż ą Ą ę Ę ó Ó    "
gsub("\\p{P}", "", textToClean, perl = TRUE)
"polish letters ł Ł ż Ż ą Ą ę Ę ó Ó 43434   "
gsub("[[:punct:]]", "", textToClean)
[1] "polish letters     ź Ź   ę Ę ó Ó ń Ń ć Ć 43434   "

gsub("[[:punct:]]", "", textToClean, perl=TRUE)
[1] "polish letters ł Ł ż Ż ź Ź ą Ą ę Ę ó Ó ń Ń ć Ć 43434   "