Validating strings with regexes (Regex)
StrictYAML can validate regular expressions and return a string. If the regular expression does not match, an exception is raised.
from strictyaml import Regex, Map, load, as_document
from collections import OrderedDict
from ensure import Ensure
schema = Map({"a": Regex(u"[1-4]"), "b": Regex(u"[5-9]")})
Parsed correctly:
a: 1
b: 5
Ensure(load(yaml_snippet, schema)).equals({"a": "1", "b": "5"})
Non-matching:
a: 5
b: 5
load(yaml_snippet, schema)
strictyaml.exceptions.YAMLValidationError:
when expecting string matching [1-4]
found non-matching string
in "<unicode string>", line 1, column 1:
a: '5'
^ (line: 1)
Non-matching suffix:
a: 1 Hello
b: 5
load(yaml_snippet, schema)
strictyaml.exceptions.YAMLValidationError:
when expecting string matching [1-4]
found non-matching string
in "<unicode string>", line 1, column 1:
a: 1 Hello
^ (line: 1)
Serialized successfully:
print(as_document(OrderedDict([("a", "1"), ("b", "5")]), schema).as_yaml())
a: 1
b: 5
Serialization failure non matching regex:
as_document(OrderedDict([("a", "x"), ("b", "5")]), schema)
strictyaml.exceptions.YAMLSerializationError:
when expecting string matching [1-4] found 'x'
Serialization failure not a string:
as_document(OrderedDict([("a", 1), ("b", "5")]), schema)
strictyaml.exceptions.YAMLSerializationError:
when expecting string matching [1-4] got '1' of type int.
Executable specification
Documentation automatically generated from regexp.story storytests.