Problem with regex example in docs

I’m trying the code in the Regex section, but I am getting an error. Anyone know what I am doing wrong?

julia> m = match(r"(a|b)(c)?(d)", "ad")
RegexMatch("ad", 1="a", 2=nothing, 3="d")

julia> first, second, third = m; first
ERROR: MethodError: no method matching iterate(::RegexMatch)
Closest candidates are:
  iterate(::Union{LinRange, StepRangeLen}) at range.jl:664
  iterate(::Union{LinRange, StepRangeLen}, ::Int64) at range.jl:664
  iterate(::T) where T<:Union{Base.KeySet{var"#s77", var"#s76"} where {var"#s77", var"#s76"<:Dict}, Base.ValueIterator{var"#s75"} where var"#s75"<:Dict} at dict.jl:693
 [1] indexed_iterate(I::RegexMatch, i::Int64)
   @ Base ./tuple.jl:89
 [2] top-level scope
   @ REPL[29]:1


Also, as an aside, where do I file a bug for a typo in the docs?

As a convinience

should be, of course, convenience

For the second, I’m sure a PR will be much appreciated (I’m not sure where you’re seeing this though? if you can find the location on the Julia repo say a docstring or something then you can directly edit it there and propose the change)

For the first, use .captures

julia> m = match(r"(a|b)(c)?(d)", "ad")
RegexMatch("ad", 1="a", 2=nothing, 3="d")

julia> f, s, t = m.captures
3-element Vector{Union{Nothing, SubString{String}}}:

PS (nitpicking): first is a function in Julia so probably best not to use it as variable name.


FWIW, your code works fine on Julia 1.7 and newer.


It is the code in the docs here:

Which is also where the typo is.

And yeah, I guess I am using 1.6.4. Surprised the Arch package isn’t updated yet. Oh wait, it was updated a couple days ago! Time to update my system.