Loading search index…
No recent searches
No results for "Query here"
Julia provides built-in support for regular expressions. Here are some examples of common regexp-related tasks in Julia.
using Regex # This tests whether a pattern matches a string. match = occursin(r"p([a-z]+)ch", "peach") println(match) # Above we used a string pattern directly, but for # other regexp tasks you'll need to create a Regex object. r = Regex("p([a-z]+)ch") # Many methods are available on these objects. Here's # a match test like we saw earlier. println(occursin(r, "peach")) # This finds the match for the regexp. println(match(r, "peach punch").match) # This also finds the first match but returns the # start and end indexes for the match instead of the # matching text. m = match(r, "peach punch") println("idx: $(m.offset):$(m.offset + length(m.match) - 1)") # The match function includes information about # both the whole-pattern matches and the submatches # within those matches. For example this will return # information for both p([a-z]+)ch and ([a-z]+). m = match(r, "peach punch") println([m.match, m.captures...]) # Similarly this will return information about the # indexes of matches and submatches. m = match(r, "peach punch") println([m.offset, m.offsets...]) # The eachmatch function applies to all # matches in the input, not just the first. For # example to find all matches for a regexp. println([m.match for m in eachmatch(r, "peach punch pinch")]) # These variants are available for the other # functions we saw above as well. println("all:", [[m.offset, m.offsets...] for m in eachmatch(r, "peach punch pinch")]) # Providing a range as the third argument to eachmatch # will limit the number of matches. println([m.match for m in eachmatch(r, "peach punch pinch", 1:2)]) # Our examples above had string arguments and used # names like match. We can also provide # Vector{UInt8} arguments and use the same function names. println(occursin(r, Vector{UInt8}("peach"))) # When creating global variables with regular # expressions you can use the @r_str macro # which is equivalent to Regex(). r = r"p([a-z]+)ch" println("regexp: ", r) # The replace function can be used to replace # subsets of strings with other values. println(replace("a peach", r => "<fruit>")) # The Func variant allows you to transform matched # text with a given function. in = Vector{UInt8}("a peach") out = replace(String(in), r => s -> uppercase(s)) println(out)
To run the program, save it as regular_expressions.jl and use julia.
regular_expressions.jl
julia
$ julia regular_expressions.jl true true peach idx: 1:5 ["peach", "ea"] [1, 2] ["peach", "punch", "pinch"] all: [[1, 2], [7, 8], [13, 14]] ["peach", "punch"] true regexp: p([a-z]+)ch a <fruit> a PEACH
For a complete reference on Julia regular expressions, check the Regex module documentation.
Regex