1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-24 22:11:15 +02:00
nix/tests/functional/lang/eval-okay-regex-split.nix
Robert Hensing 96e550efc5 Format .nix files
... with nixfmt (rfc style)
2025-01-24 17:04:02 +01:00

197 lines
2.3 KiB
Nix

with builtins;
# Non capturing regex returns empty lists
assert
split "foobar" "foobar" == [
""
[ ]
""
];
assert
split "fo*" "f" == [
""
[ ]
""
];
assert split "fo+" "f" == [ "f" ];
assert
split "fo*" "fo" == [
""
[ ]
""
];
assert
split "fo*" "foo" == [
""
[ ]
""
];
assert
split "fo+" "foo" == [
""
[ ]
""
];
assert
split "fo{1,2}" "foo" == [
""
[ ]
""
];
assert
split "fo{1,2}" "fooo" == [
""
[ ]
"o"
];
assert
split "fo*" "foobar" == [
""
[ ]
"bar"
];
# Capturing regex returns a list of sub-matches
assert
split "(fo*)" "f" == [
""
[ "f" ]
""
];
assert split "(fo+)" "f" == [ "f" ];
assert
split "(fo*)" "fo" == [
""
[ "fo" ]
""
];
assert
split "(f)(o*)" "f" == [
""
[
"f"
""
]
""
];
assert
split "(f)(o*)" "foo" == [
""
[
"f"
"oo"
]
""
];
assert
split "(fo+)" "foo" == [
""
[ "foo" ]
""
];
assert
split "(fo{1,2})" "foo" == [
""
[ "foo" ]
""
];
assert
split "(fo{1,2})" "fooo" == [
""
[ "foo" ]
"o"
];
assert
split "(fo*)" "foobar" == [
""
[ "foo" ]
"bar"
];
# Matches are greedy.
assert
split "(o+)" "oooofoooo" == [
""
[ "oooo" ]
"f"
[ "oooo" ]
""
];
# Matches multiple times.
assert
split "(b)" "foobarbaz" == [
"foo"
[ "b" ]
"ar"
[ "b" ]
"az"
];
# Split large strings containing newlines. null are inserted when a
# pattern within the current did not match anything.
assert
split "[[:space:]]+|([',.!?])" ''
Nix Rocks!
That's why I use it.
'' == [
"Nix"
[ null ]
"Rocks"
[ "!" ]
""
[ null ]
"That"
[ "'" ]
"s"
[ null ]
"why"
[ null ]
"I"
[ null ]
"use"
[ null ]
"it"
[ "." ]
""
[ null ]
""
];
# Documentation examples
assert
split "(a)b" "abc" == [
""
[ "a" ]
"c"
];
assert
split "([ac])" "abc" == [
""
[ "a" ]
"b"
[ "c" ]
""
];
assert
split "(a)|(c)" "abc" == [
""
[
"a"
null
]
"b"
[
null
"c"
]
""
];
assert
split "([[:upper:]]+)" " FOO " == [
" "
[ "FOO" ]
" "
];
true