过滤并删除以 R 中某个单词开头和结尾的句子
Filter and remove sentences that begin and end with a certain word in R
我正在尝试过滤以某个词开头和结尾的词。
我有一些文本数据,例如:
data <- c("No comment", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
现在我想检测以 no 开头和结尾的句子。我试过了
str_detect(data, "^No", negate = FALSE)
但显然第 1、3 句和令人惊讶的第 7 句也被检测到。
我不知道如何告诉 R 只检测句子当且仅当它以单词“No”开头和结尾时才检测。
有人有想法吗?
我是新来的,所以我希望我的问题描述令人满意。
期待大家的来信!
data <- c("No comment", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
data <- c(data, "No and No", "No and YesNo")
grepl("^No(.*\bNo)?$", data)
# [1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE
如果 "YesNo"
确实匹配,则从正则表达式中删除 \b
。
正则表达式:
^No
- 以文字 No
; 开头
(...)?$
- optional匹配字符串末尾;这意味着 "No"
和 "No something No"
都匹配;
.*\bNo
- 任何后跟单词边界和文字 No
编辑。将第一个元素更改为以 n 开头并以 no 结尾:
new_data <- c("No comment no", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
library(stringr)
str_detect(new_data, "^No.*no$")
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE
这是您要找的吗?
lst <- unlist(data)
startsWith(lst, "No") & endsWith(lst, "No")
[1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE
lst[startsWith(lst, "No") & endsWith(lst, "No")]
[1] "No" "No"
如果您正在寻找与“否”完全匹配的正则表达式,您可以选择:
library(stringr)
data <- c("No comment", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
str_detect("^No$", data)
# > [1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE
我正在尝试过滤以某个词开头和结尾的词。 我有一些文本数据,例如:
data <- c("No comment", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
现在我想检测以 no 开头和结尾的句子。我试过了
str_detect(data, "^No", negate = FALSE)
但显然第 1、3 句和令人惊讶的第 7 句也被检测到。
我不知道如何告诉 R 只检测句子当且仅当它以单词“No”开头和结尾时才检测。
有人有想法吗? 我是新来的,所以我希望我的问题描述令人满意。
期待大家的来信!
data <- c("No comment", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
data <- c(data, "No and No", "No and YesNo")
grepl("^No(.*\bNo)?$", data)
# [1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE
如果 "YesNo"
确实匹配,则从正则表达式中删除 \b
。
正则表达式:
^No
- 以文字No
; 开头
(...)?$
- optional匹配字符串末尾;这意味着"No"
和"No something No"
都匹配;.*\bNo
- 任何后跟单词边界和文字No
编辑。将第一个元素更改为以 n 开头并以 no 结尾:
new_data <- c("No comment no", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
library(stringr)
str_detect(new_data, "^No.*no$")
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE
这是您要找的吗?
lst <- unlist(data)
startsWith(lst, "No") & endsWith(lst, "No")
[1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE
lst[startsWith(lst, "No") & endsWith(lst, "No")]
[1] "No" "No"
如果您正在寻找与“否”完全匹配的正则表达式,您可以选择:
library(stringr)
data <- c("No comment", "Nothing", "No clue", "No", "No", "I have no clue", "Noe")
str_detect("^No$", data)
# > [1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE