我有一个字符串列表,每个字符串告诉我算法在多少次迭代后收敛。
string_list = [
"Converged after 1 iteration",
"Converged after 20 iterations",
"Converged after 7 iterations"
]
如何提取迭代次数?结果将是 [1, 20, 7]
.我试过正则表达式。显然 (?<=after )(.*)(?= iteration*)
会给我 after
之间的任何东西和 iteration
但这不起作用:
occursin(string_list[1], r"(?<=after )(.*)(?= iteration*)")
最佳答案
有一个很棒的小 Julia 包,可以更轻松地创建正则表达式,称为 ReadableRegex ,幸运的是,自述文件中的第一个示例是查找字符串中每个整数的示例:
julia> using ReadableRegex
julia> reg = @compile look_for(
maybe(char_in("+-")) * one_or_more(DIGIT),
not_after = ".",
not_before = NON_SEPARATOR)
r"(?:(?<!\.)(?:(?:[+\-])?(?:\d)+))(?!\P{Z})"
现在可以通过您的字符串列表广播该正则表达式:
julia> collect.(eachmatch.(reg, string_list))
3-element Vector{Vector{RegexMatch}}:
[RegexMatch("1")]
[RegexMatch("20")]
[RegexMatch("7")]
关于regex - Julia - 使用正则表达式从字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69988109/