ref: 70f97fe9898b4852257a9268e6ea0592ee7e3a88
dir: /lib/regex/test/boundaries.myr/
use std
use "testmatch"
const main = {
/* expected matches */
testmatch("\\<([a-z]*)\\>", "abcdef", `std.Some [
"abcdef",
][:])
testmatch(".*(\\<.*\\>).*", "!m!", `std.Some [ /* single char word in midstring */
"m",
][:])
testmatch(".*(\\<.*\\>).*", "!m", `std.Some [ /* single char word at end of string */
"m",
][:])
testmatch(".*(\\<.*\\>).*", "m!", `std.Some [ /* single char word at start of string */
"m",
][:])
testmatch(".*(\\<.*\\>).*", "!@#!!matches!!%!", `std.Some [ /* word in midstring */
"matches",
][:])
testmatch(".*(\\<.*\\>).*", "matches!!%!", `std.Some [ /* word at start of string */
"matches",
][:])
testmatch(".*(\\<.*\\>).*", "!@#!!matches", `std.Some [ /* word at end of string */
"matches",
][:])
testmatch(".*(\\<.*\\>).*", "!@#!!matches!!%!foo", `std.Some [ /* matches last word in string */
"foo",
][:])
testmatch(".*(\\<.*\\>).*", "123", `std.Some [ /* numbers are also word bounds */
"123",
][:])
/* nonmatches */
testmatch("\\<([a-z]*)\\>foo", "abcdefoo", `std.None) /* word boundary needed in midstring */
}