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
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]*)*` |