Regular Expressions
Patterns for matching Formal SignWriting in ASCII (FSW), FSW Query, SignWriting in Unicode (SWU), SWU Query, and Style strings.
FSW Patterns
- sutton_signwriting_core.regex.fsw_pattern_null = 'S00000'
- sutton_signwriting_core.regex.fsw_pattern_symbol = 'S[123][0-9a-f]{2}[0-5][0-9a-f]'
- sutton_signwriting_core.regex.fsw_pattern_number = '[0-9]{3}'
- sutton_signwriting_core.regex.fsw_pattern_sort = 'A'
- sutton_signwriting_core.regex.fsw_pattern_box = '[BLMR]'
- sutton_signwriting_core.regex.fsw_pattern_null_or_symbol = '(?:S00000|S[123][0-9a-f]{2}[0-5][0-9a-f])'
- sutton_signwriting_core.regex.fsw_pattern_prefix = '(?:A(?:S00000|S[123][0-9a-f]{2}[0-5][0-9a-f])+)'
- sutton_signwriting_core.regex.fsw_pattern_coord = '[0-9]{3}x[0-9]{3}'
- sutton_signwriting_core.regex.fsw_pattern_spatial = 'S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3}'
- sutton_signwriting_core.regex.fsw_pattern_signbox = '[BLMR][0-9]{3}x[0-9]{3}(?:S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})*'
- sutton_signwriting_core.regex.fsw_pattern_sign = '(?:A(?:S00000|S[123][0-9a-f]{2}[0-5][0-9a-f])+)?[BLMR][0-9]{3}x[0-9]{3}(?:S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})*'
- sutton_signwriting_core.regex.fsw_pattern_sortable = '(?:A(?:S00000|S[123][0-9a-f]{2}[0-5][0-9a-f])+)[BLMR][0-9]{3}x[0-9]{3}(?:S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})*'
FSW Query Patterns
- sutton_signwriting_core.regex.fswquery_pattern_null = 'S00000'
- sutton_signwriting_core.regex.fswquery_pattern_base = '[123][0-9a-f]{2}'
- sutton_signwriting_core.regex.fswquery_pattern_coord = '(?:[0-9]{3}x[0-9]{3})?'
- sutton_signwriting_core.regex.fswquery_pattern_var = 'V[0-9]+'
- sutton_signwriting_core.regex.fswquery_pattern_symbol = 'S[123][0-9a-f]{2}[0-5u][0-9a-fu]'
- sutton_signwriting_core.regex.fswquery_pattern_null_or_symbol = '(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu])'
- sutton_signwriting_core.regex.fswquery_pattern_range = 'R[123][0-9a-f]{2}t[123][0-9a-f]{2}'
- sutton_signwriting_core.regex.fswquery_pattern_item = '(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})'
- sutton_signwriting_core.regex.fswquery_pattern_list = '(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})(?:o(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2}))*'
- sutton_signwriting_core.regex.fswquery_pattern_prefix = '(?:A(?:(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})(?:o(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2}))*)+)?T'
- sutton_signwriting_core.regex.fswquery_pattern_signbox = '(?:(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})(?:o(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2}))*(?:[0-9]{3}x[0-9]{3})?)*'
- sutton_signwriting_core.regex.fswquery_pattern_full = 'Q((?:A(?:(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})(?:o(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2}))*)+)?T)?((?:(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})(?:o(?:S00000|S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2}))*(?:[0-9]{3}x[0-9]{3})?)*)?(V[0-9]+)?(-?)'
SWU Patterns
- sutton_signwriting_core.regex.swu_pattern_null = '\\U00040000'
- sutton_signwriting_core.regex.swu_pattern_symbol = '[\\U00040001-\\U0004F480]'
- sutton_signwriting_core.regex.swu_pattern_number = '[\\U0001D80C-\\U0001D9FF]'
- sutton_signwriting_core.regex.swu_pattern_sort = '\\U0001D800'
- sutton_signwriting_core.regex.swu_pattern_box = '[\\U0001D801-\\U0001D804]'
- sutton_signwriting_core.regex.swu_pattern_null_or_symbol = '(?:\\U00040000|[\\U00040001-\\U0004F480])'
- sutton_signwriting_core.regex.swu_pattern_prefix = '(?:\\U0001D800(?:\\U00040000|[\\U00040001-\\U0004F480])+)'
- sutton_signwriting_core.regex.swu_pattern_coord = '[\\U0001D80C-\\U0001D9FF]{2}'
- sutton_signwriting_core.regex.swu_pattern_spatial = '[\\U00040001-\\U0004F480][\\U0001D80C-\\U0001D9FF]{2}'
- sutton_signwriting_core.regex.swu_pattern_signbox = '[\\U0001D801-\\U0001D804][\\U0001D80C-\\U0001D9FF]{2}(?:[\\U00040001-\\U0004F480][\\U0001D80C-\\U0001D9FF]{2})*'
- sutton_signwriting_core.regex.swu_pattern_sign = '(?:\\U0001D800(?:\\U00040000|[\\U00040001-\\U0004F480])+)?[\\U0001D801-\\U0001D804][\\U0001D80C-\\U0001D9FF]{2}(?:[\\U00040001-\\U0004F480][\\U0001D80C-\\U0001D9FF]{2})*'
- sutton_signwriting_core.regex.swu_pattern_sortable = '(?:\\U0001D800(?:\\U00040000|[\\U00040001-\\U0004F480])+)[\\U0001D801-\\U0001D804][\\U0001D80C-\\U0001D9FF]{2}(?:[\\U00040001-\\U0004F480][\\U0001D80C-\\U0001D9FF]{2})*'
SWU Query Patterns
- sutton_signwriting_core.regex.swuquery_pattern_null = '\\U00040000'
- sutton_signwriting_core.regex.swuquery_pattern_base = '[\\U00040001-\\U0004F480]'
- sutton_signwriting_core.regex.swuquery_pattern_coord = '(?:[\\U0001D80C-\\U0001D9FF]{2})?'
- sutton_signwriting_core.regex.swuquery_pattern_var = 'V[0-9]+'
- sutton_signwriting_core.regex.swuquery_pattern_symbol = '[\\U00040001-\\U0004F480]f?r?'
- sutton_signwriting_core.regex.swuquery_pattern_null_or_symbol = '(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?)'
- sutton_signwriting_core.regex.swuquery_pattern_range = 'R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480]'
- sutton_signwriting_core.regex.swuquery_pattern_item = '(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480])'
- sutton_signwriting_core.regex.swuquery_pattern_list = '(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480])(?:o(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480]))*'
- sutton_signwriting_core.regex.swuquery_pattern_prefix = '(?:A(?:(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480])(?:o(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480]))*)+)?T'
- sutton_signwriting_core.regex.swuquery_pattern_signbox = '(?:(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480])(?:o(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480]))*(?:[\\U0001D80C-\\U0001D9FF]{2})?)*'
- sutton_signwriting_core.regex.swuquery_pattern_full = 'Q((?:A(?:(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480])(?:o(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480]))*)+)?T)?((?:(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480])(?:o(?:\\U00040000|[\\U00040001-\\U0004F480]f?r?|R[\\U00040001-\\U0004F480][\\U00040001-\\U0004F480]))*(?:[\\U0001D80C-\\U0001D9FF]{2})?)*)?(V[0-9]+)?(-?)'
Style Patterns
- sutton_signwriting_core.regex.style_pattern_colorize = 'C'
- sutton_signwriting_core.regex.style_pattern_colorhex = '(?:[0-9a-fA-F]{3}){1,2}'
- sutton_signwriting_core.regex.style_pattern_colorname = '[a-zA-Z]+'
- sutton_signwriting_core.regex.style_pattern_padding = 'P[0-9]{2}'
- sutton_signwriting_core.regex.style_pattern_zoom = 'Z(?:[0-9]+(?:\\.[0-9]+)?|x)'
- sutton_signwriting_core.regex.style_pattern_classbase = '-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}'
- sutton_signwriting_core.regex.style_pattern_id = '[a-zA-Z][_a-zA-Z0-9-]{0,100}'
- sutton_signwriting_core.regex.style_pattern_colorbase = '(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)'
- sutton_signwriting_core.regex.style_pattern_color = '_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)_'
- sutton_signwriting_core.regex.style_pattern_colors = '_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_'
- sutton_signwriting_core.regex.style_pattern_background = 'G_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)_'
- sutton_signwriting_core.regex.style_pattern_detail = 'D_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_'
- sutton_signwriting_core.regex.style_pattern_detailsym = 'D[0-9]{2}_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_'
- sutton_signwriting_core.regex.style_pattern_classes = '-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}(?: -?[_a-zA-Z][_a-zA-Z0-9-]{0,100})*'
- sutton_signwriting_core.regex.style_pattern_full_groups = '-(C)?(P[0-9]{2})?(G_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)_)?(D_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_)?(Z(?:[0-9]+(?:\\.[0-9]+)?|x))?(?:-((?:D[0-9]{2}_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_)*))?(?:-(-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}(?: -?[_a-zA-Z][_a-zA-Z0-9-]{0,100})*)?!(?:([a-zA-Z][_a-zA-Z0-9-]{0,100})!)?)?'
- sutton_signwriting_core.regex.style_pattern_full = '-(?:C)?(?:P[0-9]{2})?(?:G_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)_)?(?:D_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_)?(?:Z(?:[0-9]+(?:\\.[0-9]+)?|x))?(?:-(?:(?:D[0-9]{2}_(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+)(?:,(?:(?:[0-9a-fA-F]{3}){1,2}|[a-zA-Z]+))?_)*))?(?:-(?:-?[_a-zA-Z][_a-zA-Z0-9-]{0,100}(?: -?[_a-zA-Z][_a-zA-Z0-9-]{0,100})*)?!(?:(?:[a-zA-Z][_a-zA-Z0-9-]{0,100})!)?)?'