感谢亚历山大莫利的回答。您可以使用findall()
来获取UnitRange
正则表达式。
julia> findall(r"[0-9]+","aaaa1aaaa22aaaa333")
3-element Array{UnitRange{Int64},1}:
5:5
10:11
16:18
Run Code Online (Sandbox Code Playgroud)
另外,如果你想通过正则表达式获取字符串,你可以使用 SubString()
julia> s="aaaa1aaaa22aaaa333" ;
julia> SubString.(s, findall(r"[0-9]+",s))
3-element Array{SubString{String},1}:
"1"
"22"
"333"
Run Code Online (Sandbox Code Playgroud)
(以上代码在 v1.3.0 上测试过)
eachmatch
将为您提供正则表达式匹配项的迭代器。
因此,通过列表理解,您可以执行此操作
[x.offset for x in eachmatch(r"[0-9]","aaaa1aaaa2aaaa3")]
或这个
map(x->getfield(x,:offset), eachmatch(r"[0-9]","aaaa1aaaa2aaaa3"))
甚至这个...
getfield.(collect(eachmatch(r"[0-9]","aaaa1aaaa2aaaa3")), [:offset])
全部返回:
3-element Array{Int64,1}:
5
10
15
Run Code Online (Sandbox Code Playgroud)