你可以用
> library(stringr)
> w <- c("Milan 01", "New York", "Las vegas 123", "London abc")
> str_extract(w, "^\\p{L}+(?:\\s+(?!abc\\b)\\p{L}+)?")
# => [1] "milan" "New York" "las vegas" "London"
如果第一个词不能
abc
或者,在开头添加前瞻:
> str_extract(w, "^(?!abc\\b)\\p{L}+(?:\\s+(?!abc\\b)\\p{L}+)?")
^^^^^^^^^^
-
^
-字符串开头
-
\\p{L}+
[a-zA-Z]+
(取而代之)
-
(?:\\s+(?!abc\\b)\\p{L}+)?
-一个可选的序列
-
\\s+
-
(?!abc\\b)
-没有
abc公司
作为一个整体,单词可以直接出现在当前位置的右边
-
\\p{L}+
-1+个字母
一个基本的R
sub
等价物:
> sub("(?s)^(\\p{L}+(?:\\s+(?!abc\\b)\\p{L}+)?).*", "\\1", w, perl=TRUE)
> ## OR > sub("(?s)^(?!abc\\b)(\\p{L}+(?:\\s+(?!abc\\b)\\p{L}+)?).*", "\\1", w, perl=TRUE)
[1] "milan" "New York" "las vegas" "London"
在这里,
(?s)
制造
.