寻找匹配

正则表达式有四个主要的有用函数,所有函数都以 needle, haystack 顺序接受参数。术语草堆来自英语成语在大海捞针。在正则表达式的背景下,正则表达式是针,文本是大海捞针。

match 函数可用于查找字符串中的第一个匹配项:

julia> match(r"(cat|dog)s?", "my cats are dogs")
RegexMatch("cats", 1="cat")

matchall 函数可用于查找字符串中正则表达式的所有匹配项:

julia> matchall(r"(cat|dog)s?", "The cat jumped over the dogs.")
2-element Array{SubString{String},1}:
 "cat" 
 "dogs"

ismatch 函数返回一个布尔值,指示是否在字符串中找到匹配项:

julia> ismatch(r"(cat|dog)s?", "My pigs")
false

julia> ismatch(r"(cat|dog)s?", "My cats")
true

eachmatch 函数返回 RegexMatch 对象上的迭代器,适用于 for 循环

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