Regular expressions for common variable cases. I used this to find all constants (screaming snake case) in my code to put in a shared constants module.
cases.md
188 lines 4.4 kB view raw view rendered
1# Variable Case Regular Expressions 2 3Extracted from [`CaseMatcher.kt`](https://gist.github.com/SuppieRK/a6fb471cf600271230c8c7e532bdae4b#file-casematcher-kt). 4 5## Patterns 6 7### Lower Flat Case 8 9Represents matching for flat case, e.g. 'flatcase' 10 11Can be also referred as: lower flat case 12 13> **Note:** Cannot distinguish from regular lowercase words (e.g., `if`, `for`, `return`). 14 15```regex 16[a-z0-9]+ 17``` 18 19```bash 20# ripgrep (matches all lowercase words) 21rg -ow '[a-z0-9]+' file.txt 22# grep 23grep -oE '[a-z0-9]+' file.txt 24``` 25 26### Upper Flat Case 27 28Represents matching for upper flat case, e.g. 'UPPERFLATCASE' 29 30> **Note:** Cannot distinguish from regular uppercase words (e.g., `IF`, `FOR`, `NULL`). 31 32```regex 33[A-Z0-9]+ 34``` 35 36```bash 37# ripgrep (matches all uppercase words) 38rg -ow '[A-Z0-9]+' file.txt 39# grep 40grep -oE '[A-Z0-9]+' file.txt 41``` 42 43### Lower Camel Case 44 45Represents matching for camel case, e.g. 'camelCase' 46 47Can be also referred as: lower camel case, dromedary case 48 49```regex 50[a-z]+(?:[A-Z0-9]+[a-z0-9]+[A-Za-z0-9]*)* 51``` 52 53```bash 54# ripgrep (strict: requires at least one uppercase) 55rg -ow '[a-z]+[A-Z][a-z0-9]+[A-Za-z0-9]*' file.txt 56# grep 57grep -oE '[a-z]+[A-Z][a-z0-9]+[A-Za-z0-9]*' file.txt 58``` 59 60### Upper Camel Case 61 62Represents matching for upper camel case, e.g. 'UpperCamelCase' 63 64Can be also referred as: pascal case, studly case 65 66```regex 67(?:[A-Z][a-z0-9]+)(?:[A-Z]+[a-z0-9]*)* 68``` 69 70```bash 71# ripgrep (strict: requires at least one case transition) 72rg -ow '[A-Z][a-z0-9]+[A-Z][a-z0-9]*[A-Za-z0-9]*' file.txt 73# grep 74grep -oE '[A-Z][a-z0-9]+[A-Z][a-z0-9]*[A-Za-z0-9]*' file.txt 75``` 76 77### Snake Case 78 79Represents matching for snake case, e.g. 'snake_case' 80 81Can be also referred as: lower snake case, pothole case 82 83```regex 84[a-z0-9]+(?:_[a-z0-9]+)* 85``` 86 87```bash 88# ripgrep (strict: requires at least one underscore) 89rg -ow '[a-z0-9]+_[a-z0-9_]+' file.txt 90# grep 91grep -oE '[a-z0-9]+_[a-z0-9_]+' file.txt 92``` 93 94### Screaming Snake Case 95 96Represents matching for screaming snake case, e.g. 'SCREAMING_SNAKE_CASE' 97 98Can be also referred as: upper snake case, macro case, constant case 99 100```regex 101[A-Z0-9]+(?:_[A-Z0-9]+)* 102``` 103 104```bash 105# ripgrep (strict: requires at least one underscore) 106rg -ow '[A-Z0-9]+_[A-Z0-9_]+' file.txt 107# grep 108grep -oE '[A-Z0-9]+_[A-Z0-9_]+' file.txt 109``` 110 111### Camel Snake Case 112 113Represents matching for camel snake case, e.g. 'Camel_Snake_Case' 114 115```regex 116[A-Z][a-z0-9]+(?:_[A-Z]+[a-z0-9]*)* 117``` 118 119```bash 120# ripgrep (strict: requires at least one underscore) 121rg -ow '[A-Z][a-z0-9]+_[A-Z][a-z0-9_]+' file.txt 122# grep 123grep -oE '[A-Z][a-z0-9]+_[A-Z][a-z0-9_]+' file.txt 124``` 125 126### Kebab Case 127 128Represents matching for kebab case, e.g. 'kebab-case' 129 130Can be also referred as: lower kebab case, dash case, lisp case 131 132```regex 133[a-z0-9]+(?:-[a-z0-9]+)* 134``` 135 136```bash 137# ripgrep (strict: requires at least one dash) 138rg -ow '[a-z0-9]+-[a-z0-9-]+' file.txt 139# grep 140grep -oE '[a-z0-9]+-[a-z0-9-]+' file.txt 141``` 142 143### Screaming Kebab Case 144 145Represents matching for screaming kebab case, e.g. 'SCREAMING-KEBAB-CASE' 146 147Can be also referred as: upper kebab case, cobol case 148 149```regex 150[A-Z0-9]+(?:-[A-Z0-9]+)* 151``` 152 153```bash 154# ripgrep (strict: requires at least one dash) 155rg -ow '[A-Z0-9]+-[A-Z0-9-]+' file.txt 156# grep 157grep -oE '[A-Z0-9]+-[A-Z0-9-]+' file.txt 158``` 159 160### Train Case 161 162Represents matching for train case, e.g. 'Train-Case' 163 164```regex 165[A-Z][a-z0-9]+(?:-[A-Z]+[a-z0-9]*)* 166``` 167 168```bash 169# ripgrep (strict: requires at least one dash) 170rg -ow '[A-Z][a-z0-9]+-[A-Z][a-z0-9-]+' file.txt 171# grep 172grep -oE '[A-Z][a-z0-9]+-[A-Z][a-z0-9-]+' file.txt 173``` 174 175## Quick reference 176 177| Case | Regex | 178| ---------------- | ------------------------------------------- | 179| `LowerFlat` | `[a-z0-9]+` | 180| `UpperFlat` | `[A-Z0-9]+` | 181| `LowerCamel` | `[a-z]+(?:[A-Z0-9]+[a-z0-9]+[A-Za-z0-9]*)*` | 182| `UpperCamel` | `(?:[A-Z][a-z0-9]+)(?:[A-Z]+[a-z0-9]*)*` | 183| `Snake` | `[a-z0-9]+(?:_[a-z0-9]+)*` | 184| `ScreamingSnake` | `[A-Z0-9]+(?:_[A-Z0-9]+)*` | 185| `CamelSnake` | `[A-Z][a-z0-9]+(?:_[A-Z]+[a-z0-9]*)*` | 186| `Kebab` | `[a-z0-9]+(?:-[a-z0-9]+)*` | 187| `ScreamingKebab` | `[A-Z0-9]+(?:-[A-Z0-9]+)*` | 188| `Train` | `[A-Z][a-z0-9]+(?:-[A-Z]+[a-z0-9]*)*` |