R中的正则表达式匹配一个只有非单词字符的单词
Regex Expression in R to match a word with only non-word characters
尝试删除所有仅包含非单词字符或仅包含标点符号的单词(被空格包围的字符)。
**My string:** df <-c("****+++++01293-0129-= *& ==============( ----------------( hi 102938=-0 123ho123")
**Intended output:"****+++++01293-0129-= hi 102938=-0 123ho123"
尝试过:
df <- gsub(pattern = "[[:punct:]]*span[[:punct:]]*", "", df)
df <-gsub(pattern = "\<\W*\W*\>", "", df)
df <-gsub(pattern = "^\W*\W*$", "", df)
None 这些工作用于删除每个包含纯标点符号的单词。
不是最干净的,但应该可以
paste(grep("[[:alnum:]]",strsplit(df," ")[[1]],value=TRUE),collapse=" ")
[1] "****+++++01293-0129-= hi 102938=-0 123ho123"
此处我们将字符串拆分为 " "
并检查是否至少有一个字母数字值。然后用 " "
作为分隔符再次粘贴那些。
您可以尝试搜索模式:
(?<=^|\s)[^A-Za-z0-9_]+(?=$|\s)
然后替换为空字符串。例如:
input <-c("****+++++01293-0129-= *& ==============( ----------------( hi 102938=-0 123ho123")
output <- gsub("(?<=^|\s)[^A-Za-z0-9_]+(?=$|\s)", "", input, perl=TRUE)
output
[1] "****+++++01293-0129-= hi 102938=-0 123ho123"
正则表达式模式中的秘诀是使用环视作为我们通常使用单词边界 (\b
) 所做的代理。这里的问题是 非 单词字符和 space 之间的界面实际上不是单词边界。因此,我们可以将我们的边界定义为非单词字符和以下之一之间的接口:
- 字符串的开头
- 字符串结束
- 一个space个字符
尝试删除所有仅包含非单词字符或仅包含标点符号的单词(被空格包围的字符)。
**My string:** df <-c("****+++++01293-0129-= *& ==============( ----------------( hi 102938=-0 123ho123")
**Intended output:"****+++++01293-0129-= hi 102938=-0 123ho123"
尝试过:
df <- gsub(pattern = "[[:punct:]]*span[[:punct:]]*", "", df)
df <-gsub(pattern = "\<\W*\W*\>", "", df)
df <-gsub(pattern = "^\W*\W*$", "", df)
None 这些工作用于删除每个包含纯标点符号的单词。
不是最干净的,但应该可以
paste(grep("[[:alnum:]]",strsplit(df," ")[[1]],value=TRUE),collapse=" ")
[1] "****+++++01293-0129-= hi 102938=-0 123ho123"
此处我们将字符串拆分为 " "
并检查是否至少有一个字母数字值。然后用 " "
作为分隔符再次粘贴那些。
您可以尝试搜索模式:
(?<=^|\s)[^A-Za-z0-9_]+(?=$|\s)
然后替换为空字符串。例如:
input <-c("****+++++01293-0129-= *& ==============( ----------------( hi 102938=-0 123ho123")
output <- gsub("(?<=^|\s)[^A-Za-z0-9_]+(?=$|\s)", "", input, perl=TRUE)
output
[1] "****+++++01293-0129-= hi 102938=-0 123ho123"
正则表达式模式中的秘诀是使用环视作为我们通常使用单词边界 (\b
) 所做的代理。这里的问题是 非 单词字符和 space 之间的界面实际上不是单词边界。因此,我们可以将我们的边界定义为非单词字符和以下之一之间的接口:
- 字符串的开头
- 字符串结束
- 一个space个字符