PoshCode Logo PowerShell Code Repository

RegEx Quick Reference (modification of post by view diff)
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/759"></script>download | new post

get-regex.ps1 is a Regular Expression Quick Reference for .NET/C#/Powershell. It provides a quick dump of info in a PSCustomObject for quick access from a prompt. It is more complete than what is available in get-help.

  1. # get-regex.ps1
  2. #
  3. # Displays .NET/C#/Powershell Regular Expression Quick Reference
  4. #
  5. # Author: Robbie Foust (rfoust@duke.edu)
  6. #
  7. # For best visual results, run "get-regex | ft -auto"
  8.  
  9. function global:get-regex ([switch]$CharRep, [switch]$CharClass, [switch]$Anchors, [switch]$Comments, [switch]$Grouping, [switch]$Replacement)
  10.         {
  11.         $CharRepDesc = "Character representations"
  12.         $CharClassDesc = "Character classes and class-like constructs"
  13.         $AnchorsDesc = "Anchors and other zero-width tests"
  14.         $CommentsDesc = "Comments and mode modifiers"
  15.         $GroupingDesc = "Grouping, capturing, conditional, and control"
  16.         $ReplacementDesc = "Replacement sequences"
  17.  
  18.         if (!$CharRep -and !$CharClass -and !$Anchors -and !$Comments -and !$Grouping -and !$Replacement)
  19.                 {
  20.                 $all = $true
  21.                 }
  22.         else
  23.                 {
  24.                 $all = $false
  25.                 }
  26.  
  27.         if ($CharRep -or $all)
  28.                 {
  29.                 $CharRepObj = @()
  30.  
  31.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\a" -pass |
  32.                         add-member noteproperty "Meaning" "Alert (bell), x07." -pass |
  33.                         add-member noteproperty "Table" $CharRepDesc -pass
  34.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\b" -pass |
  35.                         add-member noteproperty "Meaning" "Backspace, x08, supported only in character class." -pass |
  36.                         add-member noteproperty "Table" $CharRepDesc -pass
  37.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\e" -pass |
  38.                         add-member noteproperty "Meaning" "ESC character, x1B." -pass |
  39.                         add-member noteproperty "Table" $CharRepDesc -pass
  40.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\n" -pass |
  41.                         add-member noteproperty "Meaning" "Newline, x0A." -pass |
  42.                         add-member noteproperty "Table" $CharRepDesc -pass
  43.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\r" -pass |
  44.                         add-member noteproperty "Meaning" "Carriage return, x0D." -pass |
  45.                         add-member noteproperty "Table" $CharRepDesc -pass
  46.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\f" -pass |
  47.                         add-member noteproperty "Meaning" "Form feed, x0C." -pass |
  48.                         add-member noteproperty "Table" $CharRepDesc -pass
  49.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\t" -pass |
  50.                         add-member noteproperty "Meaning" "Horizontal tab, x09." -pass |
  51.                         add-member noteproperty "Table" $CharRepDesc -pass
  52.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\v" -pass |
  53.                         add-member noteproperty "Meaning" "Vertical tab, x0B." -pass |
  54.                         add-member noteproperty "Table" $CharRepDesc -pass
  55.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\0octal" -pass |
  56.                         add-member noteproperty "Meaning" "Character specified by a two-digit octal code." -pass |
  57.                         add-member noteproperty "Table" $CharRepDesc -pass
  58.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\xhex" -pass |
  59.                         add-member noteproperty "Meaning" "Character specified by a two-digit hexadecimal code." -pass |
  60.                         add-member noteproperty "Table" $CharRepDesc -pass
  61.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\uhex" -pass |
  62.                         add-member noteproperty "Meaning" "Character specified by a four-digit hexadecimal code." -pass |
  63.                         add-member noteproperty "Table" $CharRepDesc -pass
  64.                 $CharRepObj += new-object psobject | add-member noteproperty "Sequence" "\cchar" -pass |
  65.                         add-member noteproperty "Meaning" "Named control character." -pass |
  66.                         add-member noteproperty "Table" $CharRepDesc -pass
  67.  
  68.                 $CharRepObj
  69.                 }
  70.  
  71.         if ($CharClass -or $all)
  72.                 {
  73.                 $CharClassObj = @()
  74.  
  75.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "[...]" -pass |
  76.                         add-member noteproperty "Meaning" "A single character listed or contained within a listed range." -pass |
  77.                         add-member noteproperty "Table" $CharClassDesc -pass
  78.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "[^...]" -pass |
  79.                         add-member noteproperty "Meaning" "A single character not listed and not contained within a listed range." -pass |
  80.                         add-member noteproperty "Table" $CharClassDesc -pass
  81.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "." -pass |
  82.                         add-member noteproperty "Meaning" "Any character, except a line terminator (unless single-line mode, s)." -pass |
  83.                         add-member noteproperty "Table" $CharClassDesc -pass
  84.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\w" -pass |
  85.                         add-member noteproperty "Meaning" "Word character." -pass |
  86.                         add-member noteproperty "Table" $CharClassDesc -pass
  87.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\W" -pass |
  88.                         add-member noteproperty "Meaning" "Non-word character." -pass |
  89.                         add-member noteproperty "Table" $CharClassDesc -pass
  90.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\d" -pass |
  91.                         add-member noteproperty "Meaning" "Digit." -pass |
  92.                         add-member noteproperty "Table" $CharClassDesc -pass
  93.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\D" -pass |
  94.                         add-member noteproperty "Meaning" "Non-digit." -pass |
  95.                         add-member noteproperty "Table" $CharClassDesc -pass
  96.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\s" -pass |
  97.                         add-member noteproperty "Meaning" "Whitespace character." -pass |
  98.                         add-member noteproperty "Table" $CharClassDesc -pass
  99.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\S" -pass |
  100.                         add-member noteproperty "Meaning" "Non-whitespace character." -pass |
  101.                         add-member noteproperty "Table" $CharClassDesc -pass
  102.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\p{prop}" -pass |
  103.                         add-member noteproperty "Meaning" "Character contained by given Unicode block or property." -pass |
  104.                         add-member noteproperty "Table" $CharClassDesc -pass
  105.                 $CharClassObj += new-object psobject | add-member noteproperty "Sequence" "\P{prop}" -pass |
  106.                         add-member noteproperty "Meaning" "Character not contained by given Unicode block or property." -pass |
  107.                         add-member noteproperty "Table" $CharClassDesc -pass
  108.  
  109.                 $CharClassObj
  110.                 }
  111.  
  112.         if ($Anchors -or $all)
  113.                 {
  114.                 $AnchorsObj = @()
  115.  
  116.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "^" -pass |
  117.                         add-member noteproperty "Meaning" "Start of string, or after any newline if in MULTILINE mode." -pass |
  118.                         add-member noteproperty "Table" $AnchorsDesc -pass
  119.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "\A" -pass |
  120.                         add-member noteproperty "Meaning" "Beginning of string, in all match modes." -pass |
  121.                         add-member noteproperty "Table" $AnchorsDesc -pass
  122.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "$" -pass |
  123.                         add-member noteproperty "Meaning" "End of string, or before any newline if in MULTILINE mode." -pass |
  124.                         add-member noteproperty "Table" $AnchorsDesc -pass
  125.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "\Z" -pass |
  126.                         add-member noteproperty "Meaning" "End of string but before any final line terminator, in all match modes." -pass |
  127.                         add-member noteproperty "Table" $AnchorsDesc -pass
  128.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "\z" -pass |
  129.                         add-member noteproperty "Meaning" "End of string, in all match modes." -pass |
  130.                         add-member noteproperty "Table" $AnchorsDesc -pass
  131.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "\b" -pass |
  132.                         add-member noteproperty "Meaning" "Boundary between a \w character and a \W character." -pass |
  133.                         add-member noteproperty "Table" $AnchorsDesc -pass
  134.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "\B" -pass |
  135.                         add-member noteproperty "Meaning" "Not-word-boundary." -pass |
  136.                         add-member noteproperty "Table" $AnchorsDesc -pass
  137.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "\G" -pass |
  138.                         add-member noteproperty "Meaning" "End of the previous match." -pass |
  139.                         add-member noteproperty "Table" $AnchorsDesc -pass
  140.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "(?=...)" -pass |
  141.                         add-member noteproperty "Meaning" "Positive lookahead." -pass |
  142.                         add-member noteproperty "Table" $AnchorsDesc -pass
  143.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "(?!...)" -pass |
  144.                         add-member noteproperty "Meaning" "Negative lookahead." -pass |
  145.                         add-member noteproperty "Table" $AnchorsDesc -pass
  146.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "(?<=...)" -pass |
  147.                         add-member noteproperty "Meaning" "Positive lookbehind." -pass |
  148.                         add-member noteproperty "Table" $AnchorsDesc -pass
  149.                 $AnchorsObj += new-object psobject | add-member noteproperty "Sequence" "(?<!...)" -pass |
  150.                         add-member noteproperty "Meaning" "Negative lookbehind." -pass |
  151.                         add-member noteproperty "Table" $AnchorsDesc -pass
  152.  
  153.                 $AnchorsObj
  154.                 }
  155.  
  156.         if ($Comments -or $all)
  157.                 {
  158.                 $CommentsObj = @()
  159.  
  160.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "Singleline (s)" -pass |
  161.                         add-member noteproperty "Meaning" "Dot (.) matches any character, including a line terminator." -pass |
  162.                         add-member noteproperty "Table" $CommentsDesc -pass
  163.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "Multiline (m)" -pass |
  164.                         add-member noteproperty "Meaning" "^ and $ match next to embedded line terminators." -pass |
  165.                         add-member noteproperty "Table" $CommentsDesc -pass
  166.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "IgnorePatternWhitespace (x)" -pass |
  167.                         add-member noteproperty "Meaning" "Ignore whitespace and allow embedded comments starting with #." -pass |
  168.                         add-member noteproperty "Table" $CommentsDesc -pass
  169.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "IgnoreCase (i)" -pass |
  170.                         add-member noteproperty "Meaning" "Case-insensitive match based on characters in the current culture." -pass |
  171.                         add-member noteproperty "Table" $CommentsDesc -pass
  172.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "CultureInvariant (i)" -pass |
  173.                         add-member noteproperty "Meaning" "Culture-insensitive match." -pass |
  174.                         add-member noteproperty "Table" $CommentsDesc -pass
  175.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "ExplicitCapture (n)" -pass |
  176.                         add-member noteproperty "Meaning" "Allow named capture groups, but treat parentheses as non-capturing groups." -pass |
  177.                         add-member noteproperty "Table" $CommentsDesc -pass
  178.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "Compiled" -pass |
  179.                         add-member noteproperty "Meaning" "Compile regular expression." -pass |
  180.                         add-member noteproperty "Table" $CommentsDesc -pass
  181.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "RightToLeft" -pass |
  182.                         add-member noteproperty "Meaning" "Search from right to left, starting to the left of the start position." -pass |
  183.                         add-member noteproperty "Table" $CommentsDesc -pass
  184.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "ECMAScript" -pass |
  185.                         add-member noteproperty "Meaning" "Enables ECMAScript compliance when used with IgnoreCase or Multiline." -pass |
  186.                         add-member noteproperty "Table" $CommentsDesc -pass
  187.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "(?imnsx-imnsx)" -pass |
  188.                         add-member noteproperty "Meaning" "Turn match flags on or off for rest of pattern." -pass |
  189.                         add-member noteproperty "Table" $CommentsDesc -pass
  190.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "(?imnsx-imnsx:...)" -pass |
  191.                         add-member noteproperty "Meaning" "Turn match flags on or off for the rest of the subexpression." -pass |
  192.                         add-member noteproperty "Table" $CommentsDesc -pass
  193.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "(?#...)" -pass |
  194.                         add-member noteproperty "Meaning" "Treat substring as a comment." -pass |
  195.                         add-member noteproperty "Table" $CommentsDesc -pass
  196.                 $CommentsObj += new-object psobject | add-member noteproperty "Sequence" "#..." -pass |
  197.                         add-member noteproperty "Meaning" "Treat rest of line as a comment in /x mode." -pass |
  198.                         add-member noteproperty "Table" $CommentsDesc -pass
  199.  
  200.                 $CommentsObj
  201.                 }
  202.  
  203.         if ($Grouping -or $all)
  204.                 {
  205.                 $GroupingObj = @()
  206.  
  207.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "(...)" -pass |
  208.                         add-member noteproperty "Meaning" "Grouping. Submatches fill \1,\2,... and `$1,`$2,...." -pass |
  209.                         add-member noteproperty "Table" $GroupingDesc -pass
  210.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "\n" -pass |
  211.                         add-member noteproperty "Meaning" "In a regular expression, match what was matched by the nth earlier submatch." -pass |
  212.                         add-member noteproperty "Table" $GroupingDesc -pass
  213.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "`$n" -pass |
  214.                         add-member noteproperty "Meaning" "In a replacement string, contains the nth earlier submatch." -pass |
  215.                         add-member noteproperty "Table" $GroupingDesc -pass
  216.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "(?<name>...)" -pass |
  217.                         add-member noteproperty "Meaning" "Captures matched substring into group, 'name'." -pass |
  218.                         add-member noteproperty "Table" $GroupingDesc -pass
  219.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "(?:...)" -pass |
  220.                         add-member noteproperty "Meaning" "Grouping-only parentheses, no capturing." -pass |
  221.                         add-member noteproperty "Table" $GroupingDesc -pass
  222.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "(?>...)" -pass |
  223.                         add-member noteproperty "Meaning" "Disallow backtracking for subpattern." -pass |
  224.                         add-member noteproperty "Table" $GroupingDesc -pass
  225.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "...|..." -pass |
  226.                         add-member noteproperty "Meaning" "Alternation; match one or the other." -pass |
  227.                         add-member noteproperty "Table" $GroupingDesc -pass
  228.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "*" -pass |
  229.                         add-member noteproperty "Meaning" "Match 0 or more times." -pass |
  230.                         add-member noteproperty "Table" $GroupingDesc -pass
  231.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "+" -pass |
  232.                         add-member noteproperty "Meaning" "Match 1 or more times." -pass |
  233.                         add-member noteproperty "Table" $GroupingDesc -pass
  234.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "?" -pass |
  235.                         add-member noteproperty "Meaning" "Match 1 or 0 times." -pass |
  236.                         add-member noteproperty "Table" $GroupingDesc -pass
  237.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "{n}" -pass |
  238.                         add-member noteproperty "Meaning" "Match exactly n times." -pass |
  239.                         add-member noteproperty "Table" $GroupingDesc -pass
  240.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "{n,}" -pass |
  241.                         add-member noteproperty "Meaning" "Match at least n times." -pass |
  242.                         add-member noteproperty "Table" $GroupingDesc -pass
  243.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "{x,y}" -pass |
  244.                         add-member noteproperty "Meaning" "Match at least x times, but no more than y times." -pass |
  245.                         add-member noteproperty "Table" $GroupingDesc -pass
  246.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "*?" -pass |
  247.                         add-member noteproperty "Meaning" "Match 0 or more times, but as few times as possible." -pass |
  248.                         add-member noteproperty "Table" $GroupingDesc -pass
  249.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "+?" -pass |
  250.                         add-member noteproperty "Meaning" "Match 1 or more times, but as few times as possible." -pass |
  251.                         add-member noteproperty "Table" $GroupingDesc -pass
  252.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "??" -pass |
  253.                         add-member noteproperty "Meaning" "Match 0 or 1 times, but as few times as possible." -pass |
  254.                         add-member noteproperty "Table" $GroupingDesc -pass
  255.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "{n,}?" -pass |
  256.                         add-member noteproperty "Meaning" "Match at least n times, but as few times as possible." -pass |
  257.                         add-member noteproperty "Table" $GroupingDesc -pass
  258.                 $GroupingObj += new-object psobject | add-member noteproperty "Sequence" "{x,y}?" -pass |
  259.                         add-member noteproperty "Meaning" "Match at least x times, no more than y times, but as few times as possible." -pass |
  260.                         add-member noteproperty "Table" $GroupingDesc -pass
  261.  
  262.                 $GroupingObj
  263.                 }
  264.  
  265.  
  266.         if ($Replacement -or $all)
  267.                 {
  268.                 $ReplacementObj = @()
  269.  
  270.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`$1, `$2, ..." -pass |
  271.                         add-member noteproperty "Meaning" "Captured submatches." -pass |
  272.                         add-member noteproperty "Table" $ReplacementDesc -pass
  273.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`${name}" -pass |
  274.                         add-member noteproperty "Meaning" "Matched text of a named capture group." -pass |
  275.                         add-member noteproperty "Table" $ReplacementDesc -pass
  276.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`$'" -pass |
  277.                         add-member noteproperty "Meaning" "Text before match." -pass |
  278.                         add-member noteproperty "Table" $ReplacementDesc -pass
  279.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`$&" -pass |
  280.                         add-member noteproperty "Meaning" "Text of match." -pass |
  281.                         add-member noteproperty "Table" $ReplacementDesc -pass
  282.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`$'" -pass |
  283.                         add-member noteproperty "Meaning" "Text after match." -pass |
  284.                         add-member noteproperty "Table" $ReplacementDesc -pass
  285.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`$+" -pass |
  286.                         add-member noteproperty "Meaning" "Last parenthesized match." -pass |
  287.                         add-member noteproperty "Table" $ReplacementDesc -pass
  288.                 $ReplacementObj += new-object psobject | add-member noteproperty "Sequence" "`$_" -pass |
  289.                         add-member noteproperty "Meaning" "Copy of original input string." -pass |
  290.                         add-member noteproperty "Table" $ReplacementDesc -pass
  291.  
  292.                 $ReplacementObj
  293.                 }
  294.  
  295.         }

Submit a correction or amendment below (
click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:


Remember me