Created
September 12, 2016 17:09
-
-
Save jhyland87/af509a98081eb4197caa290c7f15ae01 to your computer and use it in GitHub Desktop.
SQL Macro stuff
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\{ | |
(?:(?# Macro settings start) | |
\;? | |
(?# Noun ptrn start)(?P<noun>(?:cols|col|range))\: | |
(?# Column idx start)(?: | |
(?P<colgroup> | |
(?<=cols:)(?# Colgroup 'cols' EG: A,C,E,G)(?P<cols>(?:(?:[a-zA-Z]+|[0-9]+)(?:,(?:[a-zA-Z]+|[0-9]+))+)) | |
| | |
(?<=range:)(?# Colgroup 'range' EG: A-Z)(?P<col_start>(?:[a-zA-Z]+|[0-9]+))\-(?P<col_stop>(?:[a-zA-Z]+|[0-9]+|\*)) | |
)? | |
| | |
(?<=col:)(?# Single col EG: A)(?P<col>(?:[a-zA-Z]+|[0-9]+)) | |
) | |
\;? | |
| | |
\;? | |
(?# Default Value)(?:d\:(?P<default>(?:[a-zA-Z0-9-_\s]+))) | |
\;? | |
| | |
\;? | |
(?# Optional 'colgroup' joiner)(?(colgroup)(?:j\:(?P<joiner>(?:.)))?)\;? | |
(?# Macro settings stop))+ | |
\}(?# Optional modifier)(?P<modifier>(?:[\?\!]))? | |
\{(?:(?# Macro settings start)\;?(?# Noun ptrn start)(?P<noun>(?:cols|col|range))\:(?# Column idx start)(?:(?P<colgroup>(?<=cols:)(?# Colgroup 'cols' EG: A,C,E,G)(?P<cols>(?:(?:[a-zA-Z]+|[0-9]+)(?:,(?:[a-zA-Z]+|[0-9]+))+))|(?<=range:)(?# Colgroup 'range' EG: A-Z)(?P<col_start>(?:[a-zA-Z]+|[0-9]+))\-(?P<col_stop>(?:[a-zA-Z]+|[0-9]+|\*)))?|(?<=col:)(?# Single col EG: A)(?P<col>(?:[a-zA-Z]+|[0-9]+)))\;?|\;?(?# Default Value)(?:d\:(?P<default>(?:[a-zA-Z0-9-_\s]+)))\;?|\;?(?# Optional 'colgroup' joiner)(?(colgroup)(?:j\:(?P<joiner>(?:.)))?)\;?(?# Macro settings stop))+\}(?# Optional modifier)(?P<modifier>(?:[\?\!]))? | |
Regex101.com Example: https://regex101.com/r/mV4tQ4/4 | |
# Example Macros | |
{col:A}! # Column: A; Required; Optional | |
{cols:c,e,g,i;d:test} # Columns: C,E,G,I; Default: test | |
{range:C-Z;d:test} # Col Range: C-Z; Default: test | |
{d:test;cols:a,z,q,p;j:,} # Columns: A,Z,Q,P, Joiner: , | |
{cols:U,V;j:|} # Columns: U, V; Joiner: |; Optional | |
{range:b-f} # Col Range: B-F; Optional | |
{cols:z,p,1,3} # Columns: Z, P, #1 (A), #3 (C); Optional | |
{range:2-Y}! # Col Range: #2 (B)-Y; Required | |
{col:1} # Column: #1 (A); Optional |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment