Xin lỗi vì làm cho này một câu trả lời additonal, nhưng nó là quá nhiều dòng cho nhận xét.
Tôi chỉ muốn nhắc nhở rằng số lượng mục có thể được dán cùng nhau qua paste(..., collapse = "|")
để được sử dụng làm mẫu khớp duy nhất bị giới hạn - xem bên dưới. Có lẽ ai đó có thể biết chính xác giới hạn ở đâu? Phải thừa nhận rằng con số có thể không thực tế, nhưng tùy thuộc vào nhiệm vụ được thực hiện nó không hoàn toàn bị loại trừ khỏi những cân nhắc của chúng tôi.
Đối với số lượng mặt hàng thực sự lớn, cần có vòng lặp để kiểm tra từng mục của mẫu.
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)
Nguồn
2017-11-10 10:48:38
@andrie, điều này hoàn toàn rực rỡ, được giả định nó là không thể trong nhiều năm, trong khi nó chỉ là một regex đơn giản, –
@DavidArenburg :-) Tôi đã học được từ kinh nghiệm cay đắng rằng không có gì là không thể trong R. Nó luôn luôn chỉ là một câu hỏi làm sao! – Andrie