regex - Julia - 使用正则表达式从字符串中提取数字

标签 regex julia

我有一个字符串列表,每个字符串告诉我算法在多少次迭代后收敛。

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/

相关文章:

Java Regex - 使用 String 的 replaceAll 方法替换换行符

regex - 使用regsub捕获查询字符串左侧的值

regex - 为什么我在 Windows 中运行的 Perl 程序在 Mac 上的 Mountain Lion 中无法运行?

julia - 在 Julia 中加载本地模块

javascript - 如何从模式中拆分字符串

java - URL 中有效图像的正则表达式

julia - 如何轻松更新 Julia 0.4?

memory - 就地更新矩阵的列

macros - 如何在Julia中创建用于创建符号的宏

callback - Julia 中的函数句柄