我有一个示例grepl()
代码,用于区分男性和女性名称。给出以下代码并且它有效,但我无法理解它是如何工作的。
name = c("Braund, Mr. Owen Harris",
"Cumings, Mrs. John Bradley (Florence Briggs Thayer)")
grepl("\\(.*?\\)", name)
# [1] FALSE TRUE
答案 0 :(得分:0)
匹配基于(
,零个或多个字符(.*
)的存在,紧跟其后跟一个结束)
)。在这里,它假设女性名字有括号。我们还可以根据Mrs.
grepl("\\bMrs\\.", name)
#[1] FALSE TRUE
答案 1 :(得分:0)
您的代码不区分男性和女性名称。
"\\(.*?\\)"
是regular expression。它是一种在大文本中搜索模式的有效方式(如CTRL + F
)
grepl("\\(.*?\\)", name)
在names
中搜索符合左括号(
,后跟多个字符,后跟右括号)
的元素。< / p>
因此,这个正则表达式不区分男性和女性名称,它区分具有( .. something something .. )
的元素和没有这种模式的元素。