blob: 651e39a685e8779d34d631f916f4d2c52be9b735 [file] [log] [blame]
import re
# E.g.
# - 00:32:00.999999
# - 00:32:00
_TIME_RE_STR = r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?"
RE_HEX = re.compile(r"[0-9A-Fa-f](?:_?[0-9A-Fa-f])*")
RE_BIN = re.compile(r"[01](?:_?[01])*")
RE_OCT = re.compile(r"[0-7](?:_?[0-7])*")
RE_DEC_OR_FLOAT = re.compile(
r"[+-]?(?:0|[1-9](?:_?[0-9])*)" # integer
+ r"(?:\.[0-9](?:_?[0-9])*)?" # optional fractional part
+ r"(?:[eE][+-]?[0-9](?:_?[0-9])*)?" # optional exponent part
)
RE_LOCAL_TIME = re.compile(_TIME_RE_STR)
RE_DATETIME = re.compile(
r"([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[01])" # date, e.g. 1988-10-27
+ r"(?:"
+ r"[T ]"
+ _TIME_RE_STR
+ r"(?:Z|[+-]([01][0-9]|2[0-3]):([0-5][0-9]))?" # time offset
+ r")?"
)