stringr:U_REGEX_BAD_INTERVAL 错误
stringr: U_REGEX_BAD_INTERVAL error
我有一个被 grepl
正确解析的正则表达式,但在用作 str_extract_all
的 pattern
时生成错误。
我在 OSX.
下使用 stringr
v1.0.0、R
v3.2.3
在 this 问题中,传递给 stringr
的正则表达式会产生类似的错误,但建议的解决方案不适用于我的情况。
require(stringr)
string <- "Decreto Legislativo 6 marzo 1992, n. 248; G.U. n. 77 del 1° aprile 1992"
it_months <- c("gennaio","febbraio","marzo","aprile","maggio","giugno","luglio",
"agosto","settembre","ottobre","novembre","dicembre")
grep_it_date <- paste0("\d{1-2}(º?) (", paste(it_months, collapse="|") ,") \d{4}$")
grepl(grep_it_date, string)
# [1] TRUE
dates_from_string <- str_extract_all(tolower(string), grep_it_date, simplify = TRUE)
# Error in stri_extract_all_regex(string, pattern, simplify = simplify, :
# Error in {min,max} interval. (U_REGEX_BAD_INTERVAL)
您需要按照错误中的指示将 \d{1-2}
更改为 \d{1,2}
,因为间隔分隔符是 ,
而不是 -
如果我们需要从'string'
中提取6 marzo 1992
和1° aprile 1992
grep_it_date <- paste0("[0-9]{1,2}([^0-9 ]?)\s+(", paste(it_months, collapse="|") ,")\s+\d{4}")
str_extract_all(tolower(string), grep_it_date)[[1]]
#[1] "6 marzo 1992" "1° aprile 1992"
我有一个被 grepl
正确解析的正则表达式,但在用作 str_extract_all
的 pattern
时生成错误。
我在 OSX.
下使用stringr
v1.0.0、R
v3.2.3
在 this 问题中,传递给 stringr
的正则表达式会产生类似的错误,但建议的解决方案不适用于我的情况。
require(stringr)
string <- "Decreto Legislativo 6 marzo 1992, n. 248; G.U. n. 77 del 1° aprile 1992"
it_months <- c("gennaio","febbraio","marzo","aprile","maggio","giugno","luglio",
"agosto","settembre","ottobre","novembre","dicembre")
grep_it_date <- paste0("\d{1-2}(º?) (", paste(it_months, collapse="|") ,") \d{4}$")
grepl(grep_it_date, string)
# [1] TRUE
dates_from_string <- str_extract_all(tolower(string), grep_it_date, simplify = TRUE)
# Error in stri_extract_all_regex(string, pattern, simplify = simplify, :
# Error in {min,max} interval. (U_REGEX_BAD_INTERVAL)
您需要按照错误中的指示将 \d{1-2}
更改为 \d{1,2}
,因为间隔分隔符是 ,
而不是 -
如果我们需要从'string'
中提取6 marzo 1992
和1° aprile 1992
grep_it_date <- paste0("[0-9]{1,2}([^0-9 ]?)\s+(", paste(it_months, collapse="|") ,")\s+\d{4}")
str_extract_all(tolower(string), grep_it_date)[[1]]
#[1] "6 marzo 1992" "1° aprile 1992"