Files
agila_open_tool/tools/v/examples/regex/pcre.v
T

70 lines
1.5 KiB
V

import regex.pcre
// Since 2026/02/08, regex.pcre is built-in and implemented in pure V.
// The same example will compile and run with the C wrapper of the PCRE library
// too, but you will need to `import pcre` instead.
fn example() {
r := pcre.new_regex('Match everything after this: (.+)', 0) or {
println('An error occurred!')
return
}
m := r.match_str('Match everything after this: "I ❤️ VLang!"', 0, 0) or {
println('No match!')
return
}
// m.get(0) -> Match everything after this: "I ❤️ VLang!"
// m.get(1) -> "I ❤️ VLang!"'
// m.get(2) -> Error!
whole_match := m.get(0) or {
println('We matched nothing...')
return
}
matched_str := m.get(1) or {
println('We matched nothing...')
return
}
println(whole_match) // Match everything after this: "I ❤️ VLang!"
println(matched_str) // "I ❤️ VLang!"
}
fn main() {
example()
mut text := '[ an s. s! ]( wi4ki:something )
[ an s. s! ]( wi4ki:something )
[ an s. s! ](wiki:something)
[ an s. s! ](something)dd
d [ an s. s! ](something ) d
[ more text ]( something ) s [ something b ](something)dd
'
// check the regex on https://regex101.com/r/HdYya8/1/
regex := r'(\[[a-z\.\! ]*\]\( *\w*\:*\w* *\))*'
r := pcre.new_regex(regex, 0) or {
println('An error occurred!')
return
}
m := r.match_str(text, 0, 0) or {
println('No match!')
return
}
whole_match1 := m.get(0) or {
println('We matched nothing 0...')
return
}
println(whole_match1)
println(m.get_all())
}