You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia语言如何通过正则表达式从字符串中提取迭代次数数值

问题原因
  • 第一个错误是occursin函数参数顺序颠倒:Julia中occursin的调用规则是occursin(匹配模式, 待检测字符串),你传入的两个参数顺序反了,所以返回结果不符合预期。
  • 第二个错误是正则规则存在冗余且匹配逻辑有误:你写的iteration*实际表示iteratio后面跟0个或多个n,并不能兼容单数iteration和复数iterations的场景;同时用.*匹配数字不够精准,可能捕获到多余的空白或其他字符。
正确实现方案

1. 修正正则表达式

用\d+精准匹配数字,用iterations?兼容单复数场景,最终正则为:
r"(?<=after )\d+(?= iterations?)"

2. 完整实现代码

string_list = [
    "Converged after 1 iteration", 
    "Converged after 20 iterations", 
    "Converged after 7 iterations"
]

# 定义匹配规则
num_pattern = r"(?<=after )\d+(?= iterations?)"
# 遍历列表提取数字并转为整数
res = [parse(Int, match(num_pattern, str).match) for str in string_list]

执行后res的值就是你预期的[1, 20, 7]。

如果只需要检测是否存在匹配,修正参数顺序后的occursin调用写法为:

occursin(num_pattern, string_list[1])
# 返回值为 true

内容的提问来源于stack exchange,提问作者Physics_Student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:45:07