使用 stringr 根据第一个字母删除单词
remove words based on first letter using stringr
我想删除字符串中所有以“a”开头的单词。
输入:
string <- "This is a sentence about nothing."
我的尝试:
stringr::str_remove_all(string,"a*\b")
我得到的输出:
[1] "This is sentence about nothing."
我想要的输出:
[1] "This is sentence nothing."
我不确定如何根据一个字母进行检测,而是对整个单词执行操作(例如,删除、替换)。感谢任何输入!
a*\b
模式匹配零个或多个 a
个字符,后跟字符串结尾或单词字符。它不匹配一个词,除非它是 a
个词。
您可以使用
stringr::str_remove_all(string,"\ba\w*")
stringr::str_replace_all(string,"\ba\w*", "")
gsub("\ba\w*", "", string, perl=TRUE) ## ASCII only letters/digits
其中 \ba\w*
匹配单词边界,a
,然后是零个或多个单词字符。
如果您还想删除单词前的任何空格,请在开头添加 \s*
:
stringr::str_remove_all(string,"\s*\ba\w*")
stringr::str_replace_all(string,"\s*\ba\w*", "")
gsub("\s*\ba\w*", "", string, perl=TRUE) ## ASCII only letters/digits/whitespaces
如果您需要确保只删除仅由字母组成的自然语言单词,那么您可以将 \w
替换为 \p{L}
:
stringr::str_remove_all(string,"\s*\ba\p{L}*")
stringr::str_replace_all(string,"\s*\ba\p{L}*", "")
gsub("(*UCP)\s*\ba\p{L}*", "", string, perl=TRUE) ## any Uncicode letters/digits/whitespaces
我想删除字符串中所有以“a”开头的单词。
输入:
string <- "This is a sentence about nothing."
我的尝试:
stringr::str_remove_all(string,"a*\b")
我得到的输出:
[1] "This is sentence about nothing."
我想要的输出:
[1] "This is sentence nothing."
我不确定如何根据一个字母进行检测,而是对整个单词执行操作(例如,删除、替换)。感谢任何输入!
a*\b
模式匹配零个或多个 a
个字符,后跟字符串结尾或单词字符。它不匹配一个词,除非它是 a
个词。
您可以使用
stringr::str_remove_all(string,"\ba\w*")
stringr::str_replace_all(string,"\ba\w*", "")
gsub("\ba\w*", "", string, perl=TRUE) ## ASCII only letters/digits
其中 \ba\w*
匹配单词边界,a
,然后是零个或多个单词字符。
如果您还想删除单词前的任何空格,请在开头添加 \s*
:
stringr::str_remove_all(string,"\s*\ba\w*")
stringr::str_replace_all(string,"\s*\ba\w*", "")
gsub("\s*\ba\w*", "", string, perl=TRUE) ## ASCII only letters/digits/whitespaces
如果您需要确保只删除仅由字母组成的自然语言单词,那么您可以将 \w
替换为 \p{L}
:
stringr::str_remove_all(string,"\s*\ba\p{L}*")
stringr::str_replace_all(string,"\s*\ba\p{L}*", "")
gsub("(*UCP)\s*\ba\p{L}*", "", string, perl=TRUE) ## any Uncicode letters/digits/whitespaces