LoadError: PCRE compilation error: lookbehind assertion is not fixed length
LoadError: PCRE compilation error: lookbehind assertion is not fixed length
当我尝试在 julia 中编写一个使用后视模式的解析器时,它抛出一个 PCRE compilation error
。
function parser(str::String)
a = match(r"^[a-zA-Z]*_[0-9]", str)
b = match(r"(?<=[a-zA-Z]*_[0-9]_)[a-zA-Z]", str)
a.match, b.match
end
parser("Block_1_Fertilized_station_C_position_23 KA1F.C.23")
# LoadError: PCRE compilation error: lookbehind assertion is not fixed length at offset 0
有人可以解释我做错了什么吗?
Julia 使用 Perl 兼容正则表达式 (pcre),并且如 pcre documentation:
中所述
Each top-level branch of a lookbehind must be of a fixed length.
这意味着您不能在后视模式中使用 *
或 +
等运算符。
所以你必须想出一个不使用它们的模式。在您的情况下,以下可能有效:
function parser(str::String)
a = match(r"^[a-zA-Z]*_[0-9]", str)
b = match(r"(?<=_[0-9]_)[a-zA-Z]*", str)
a.match, b.match
end
parser("Block_1_Fertilized_station_C_position_23 KA1F.C.23")
# ("Block_1", "Fertilized")
当我尝试在 julia 中编写一个使用后视模式的解析器时,它抛出一个 PCRE compilation error
。
function parser(str::String)
a = match(r"^[a-zA-Z]*_[0-9]", str)
b = match(r"(?<=[a-zA-Z]*_[0-9]_)[a-zA-Z]", str)
a.match, b.match
end
parser("Block_1_Fertilized_station_C_position_23 KA1F.C.23")
# LoadError: PCRE compilation error: lookbehind assertion is not fixed length at offset 0
有人可以解释我做错了什么吗?
Julia 使用 Perl 兼容正则表达式 (pcre),并且如 pcre documentation:
中所述Each top-level branch of a lookbehind must be of a fixed length.
这意味着您不能在后视模式中使用 *
或 +
等运算符。
所以你必须想出一个不使用它们的模式。在您的情况下,以下可能有效:
function parser(str::String)
a = match(r"^[a-zA-Z]*_[0-9]", str)
b = match(r"(?<=_[0-9]_)[a-zA-Z]*", str)
a.match, b.match
end
parser("Block_1_Fertilized_station_C_position_23 KA1F.C.23")
# ("Block_1", "Fertilized")