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 code

Variable Case Regular Expressions#

Extracted from CaseMatcher.kt.

Patterns#

Lower Flat Case#

Represents matching for flat case, e.g. 'flatcase'

Can be also referred as: lower flat case

Note: Cannot distinguish from regular lowercase words (e.g., if, for, return).

[a-z0-9]+
# ripgrep (matches all lowercase words)
rg -ow '[a-z0-9]+' file.txt
# grep
grep -oE '[a-z0-9]+' file.txt

Upper Flat Case#

Represents matching for upper flat case, e.g. 'UPPERFLATCASE'

Note: Cannot distinguish from regular uppercase words (e.g., IF, FOR, NULL).

[A-Z0-9]+
# ripgrep (matches all uppercase words)
rg -ow '[A-Z0-9]+' file.txt
# grep
grep -oE '[A-Z0-9]+' file.txt

Lower Camel Case#

Represents matching for camel case, e.g. 'camelCase'

Can be also referred as: lower camel case, dromedary case

[a-z]+(?:[A-Z0-9]+[a-z0-9]+[A-Za-z0-9]*)*
# ripgrep (strict: requires at least one uppercase)
rg -ow '[a-z]+[A-Z][a-z0-9]+[A-Za-z0-9]*' file.txt
# grep
grep -oE '[a-z]+[A-Z][a-z0-9]+[A-Za-z0-9]*' file.txt

Upper Camel Case#

Represents matching for upper camel case, e.g. 'UpperCamelCase'

Can be also referred as: pascal case, studly case

(?:[A-Z][a-z0-9]+)(?:[A-Z]+[a-z0-9]*)*
# ripgrep (strict: requires at least one case transition)
rg -ow '[A-Z][a-z0-9]+[A-Z][a-z0-9]*[A-Za-z0-9]*' file.txt
# grep
grep -oE '[A-Z][a-z0-9]+[A-Z][a-z0-9]*[A-Za-z0-9]*' file.txt

Snake Case#

Represents matching for snake case, e.g. 'snake_case'

Can be also referred as: lower snake case, pothole case

[a-z0-9]+(?:_[a-z0-9]+)*
# ripgrep (strict: requires at least one underscore)
rg -ow '[a-z0-9]+_[a-z0-9_]+' file.txt
# grep
grep -oE '[a-z0-9]+_[a-z0-9_]+' file.txt

Screaming Snake Case#

Represents matching for screaming snake case, e.g. 'SCREAMING_SNAKE_CASE'

Can be also referred as: upper snake case, macro case, constant case

[A-Z0-9]+(?:_[A-Z0-9]+)*
# ripgrep (strict: requires at least one underscore)
rg -ow '[A-Z0-9]+_[A-Z0-9_]+' file.txt
# grep
grep -oE '[A-Z0-9]+_[A-Z0-9_]+' file.txt

Camel Snake Case#

Represents matching for camel snake case, e.g. 'Camel_Snake_Case'

[A-Z][a-z0-9]+(?:_[A-Z]+[a-z0-9]*)*
# ripgrep (strict: requires at least one underscore)
rg -ow '[A-Z][a-z0-9]+_[A-Z][a-z0-9_]+' file.txt
# grep
grep -oE '[A-Z][a-z0-9]+_[A-Z][a-z0-9_]+' file.txt

Kebab Case#

Represents matching for kebab case, e.g. 'kebab-case'

Can be also referred as: lower kebab case, dash case, lisp case

[a-z0-9]+(?:-[a-z0-9]+)*
# ripgrep (strict: requires at least one dash)
rg -ow '[a-z0-9]+-[a-z0-9-]+' file.txt
# grep
grep -oE '[a-z0-9]+-[a-z0-9-]+' file.txt

Screaming Kebab Case#

Represents matching for screaming kebab case, e.g. 'SCREAMING-KEBAB-CASE'

Can be also referred as: upper kebab case, cobol case

[A-Z0-9]+(?:-[A-Z0-9]+)*
# ripgrep (strict: requires at least one dash)
rg -ow '[A-Z0-9]+-[A-Z0-9-]+' file.txt
# grep
grep -oE '[A-Z0-9]+-[A-Z0-9-]+' file.txt

Train Case#

Represents matching for train case, e.g. 'Train-Case'

[A-Z][a-z0-9]+(?:-[A-Z]+[a-z0-9]*)*
# ripgrep (strict: requires at least one dash)
rg -ow '[A-Z][a-z0-9]+-[A-Z][a-z0-9-]+' file.txt
# grep
grep -oE '[A-Z][a-z0-9]+-[A-Z][a-z0-9-]+' file.txt

Quick reference#

Case Regex
LowerFlat [a-z0-9]+
UpperFlat [A-Z0-9]+
LowerCamel [a-z]+(?:[A-Z0-9]+[a-z0-9]+[A-Za-z0-9]*)*
UpperCamel (?:[A-Z][a-z0-9]+)(?:[A-Z]+[a-z0-9]*)*
Snake [a-z0-9]+(?:_[a-z0-9]+)*
ScreamingSnake [A-Z0-9]+(?:_[A-Z0-9]+)*
CamelSnake [A-Z][a-z0-9]+(?:_[A-Z]+[a-z0-9]*)*
Kebab [a-z0-9]+(?:-[a-z0-9]+)*
ScreamingKebab [A-Z0-9]+(?:-[A-Z0-9]+)*
Train [A-Z][a-z0-9]+(?:-[A-Z]+[a-z0-9]*)*