Üzgünüz, ama bir yorum için çok fazla satır:
stri_detect_regex(x, pattern)
## [1] TRUE TRUE TRUE FALSE
Ve bazı kriterler: Senin durumunda desen yüzden bu bir kullanmak, düzenli ifade olduğunu.
Tek eşleştirme deseni olarak kullanılmak üzere paste(..., collapse = "|")
aracılığıyla yapıştırılabilecek öğelerin sayısının sınırlı olduğunu hatırlatmak istedim - aşağıya bakın. Belki biri tam olarak sınırın nerede olduğunu söyleyebilir mi? Kuşkusuz sayı gerçekçi olmayabilir, ama göreve bağlı tamamen bizim hususlar dışında edilmemelidir gerçekleştirilecek.
Çok fazla sayıda öğe için, desenin her bir öğesinin kontrol edilmesi için bir döngü gerekir.
set.seed(0)
samplefun <- function(n, x, collapse){
paste(sample(x, n, replace=TRUE), collapse=collapse)
}
words <- sapply(rpois(10000000, 8) + 1, samplefun, letters, '')
text <- sapply(rpois(1000, 5) + 1, samplefun, words, ' ')
#since execution takes a while, I have commented out the following lines
#result <- grepl(paste(words, collapse = "|"), text)
# Error in grepl(pattern, text) :
# invalid regular expression
# 'wljtpgjqtnw|twiv|jphmer|mcemahvlsjxr|grehqfgldkgfu|
# ...
#result <- stringi::stri_detect_regex(text, paste(words, collapse = "|"))
# Error in stringi::stri_detect_regex(text, paste(words, collapse = "|")) :
# Pattern exceeds limits on size or complexity. (U_REGEX_PATTERN_TOO_BIG)
@andrie, bu kesinlikle parlak, sadece basit bir regex iken, –
@DavidArenburg :-) yıllarca imkansız olduğunu varsayarak, acı deneyimlerinden öğrendim. Hiçbir şey mümkün değildir. Nasıl! – Andrie