Skip to content
Related Articles

Related Articles

Pattern Matching in Julia
  • Difficulty Level : Medium
  • Last Updated : 25 Aug, 2020

Pattern matching is the process of checking whether a specific sequence of characters/tokens/data exists among the given data. Regular programming languages make use of regular expressions (regex) for pattern matching. 

In Julia to match given string with a given pattern following pre-defined functions can be used:

  • match()
  • ismatch()
  • matchall()
  • eachmatch()

All of these functions take arguments in needle, haystack order. In the context of regexes, the regex is the needle, and the text is the haystack.

Using match() Function

match() is an inbuilt function in Julia which is used to search for the first match of the given regular expression in the specified string. If a regular expression does match, the value returned by match is a RegexMatch object. These objects record how the expression matches, including the substring that the pattern matches and any captured substrings, if there are any. 

You can extract the following info from a RegexMatch object:



  • The entire substring matched: m.match
  • The captured substrings as an array of strings: m.captures
  • The offset at which the whole match begins: m.offset
  • The offsets of the captured substrings as a vector: m.offsets
Syntax:
match(r::Regex, s::AbstractString, idx::Integer)

Parameters:
r::Regex: Specified regular expression.
s::AbstractString: Specified string.
idx::Integer: It specifies the point from which the searching get started.

Returns: It returns a RegexMatch object containing the match or nothing if the match failed.

Julia

filter_none

edit
close

play_arrow

link
brightness_4
code

println(match(r"s.t", "the cat sat on the mat"))
println(match(r"^\w+", "This is a test"))

chevron_right


Using ismatch() Function

The ismatch() function returns a boolean indicating whether a match was found inside the string.

Syntax:
match(r::Regex, s::AbstractString)

Parameters:
r::Regex: Specified regular expression.
s::AbstractString: Specified string.

Returns: It returns a boolean value and returns true if match is found, otherwise false.

Julia

filter_none

edit
close

play_arrow

link
brightness_4
code

println(ismatch(r"(cat|dog)s?", "My pigs"))
println(ismatch(r"(cat|dog)s?", "My cats"))

chevron_right


Using matchall() Function

The matchall() function can be used to find all matches of a regular expression in a string.

Syntax:
matchall(r::Regex, s::AbstractString, overlap::Bool=false)

Parameters:
r::Regex: Specified regular expression.
s::AbstractString: Specified string.
overlap: Boolean Value. If overlap is true, the matching sequences are allowed to overlap indices in the original string, otherwise they must be from distinct character ranges.

Returns: Return a vector of the matching substrings from eachmatch.

Julia

filter_none

edit
close

play_arrow

link
brightness_4
code

println(matchall(r"[a-z]", "is a letter"))

chevron_right


Using eachmatch() Function

The eachmatch() function returns an iterator over RegexMatch objects, suitable for use with for loops.

Syntax:
eachmatch(r::Regex, s::AbstractString, overlap::Bool=false)

Parameters:
r::Regex: Specified regular expression.
s::AbstractString: Specified string.
overlap: Boolean Value. If it is true, the matching sequences are allowed to overlap indices in the original string, otherwise they must be from distinct character ranges.

Returns: Search for all matches of a the regular expression r in s and return a iterator over the matches. 

Julia

filter_none

edit
close

play_arrow

link
brightness_4
code

for m in eachmatch(r"(cat|dog)s?", "My cats and my dog")
    println("Matched $(m.match) at index $(m.offset)")
end

chevron_right


My Personal Notes arrow_drop_up
Recommended Articles
Page :