regex

The regex.yml file controls how filenames are parsed using regex rules.

Syntax:

[name]:                          # Name of the group
  pattern: [pattern]             # Regex matching pattern
  type: ["str", "list", "bool"]  # OPTIONAL. How to parse this match. If "list", a list of possible values needs
                                   to be defined in the config defaults. If "str", will pull out the string of
                                   the regex match. If bool, if the pattern is found within the filename will be
                                   set True, else False. Defaults to "bool"
  flags: ["I", "NOFLAG"]         # OPTIONAL. Flags to pass to regex. "I" indicates ignorecase, "NOFLAG" means no
                                   flags. Defaults to "I"
  group: [group]                 # OPTIONAL. Regex patterns can be grouped together into a single overarching group.
                                   If not set, will not group
  search_tags: [True, False]     # OPTIONAL. If False, will search the whole string instead of tags within the file.
                                   Defaults to True

Full file

regions:
  pattern: "\\((([regions])(,\\s?)?)*\\)"
  type: "list"
  flags: "NOFLAG"

languages:
  pattern: "\\((([languages])(,\\s?)?)*\\)"
  type: "list"
  flags: "NOFLAG"

multi_disc:
  pattern: "\\((Dis[ck]|Seite)[-\\s][0-9A-Z]\\)"

date:
  pattern: "\\s?\\((?:\\d{8}|\\d{4}-\\d{2}-\\d{2}|\\d{2}-\\d{2}-\\d{4}|\\d{2}-\\d{2}-\\d{2}|\\d{4}-\\d{2}-\\d{2}T\\d{6}|~?\\d{4}-(?:\\d{2}|xx)-xx|(?:January|February|March|April|May|June|July|August|September|October|November|December),\\s?\\d{4})\\)"
  type: "str"

alt:
  pattern: "\\(Alt.*?\\)"
  group: "alternate"

# APPLICATIONS

bracket_program:
  pattern: "\\((?:Test )?Program\\)"
  group: "applications"
  include_in_short_name: true

non_bracket_program:
  pattern: "(Check|Sample) Program"
  search_tags: false
  group: "applications"
  include_in_short_name: true

# BAD DUMP

bad_dump:
  pattern: "\\[b\\]"
  search_tags: false
  group: "bad_dumps"

# CONSOLE

bios:
  pattern: "\\[BIOS\\]\\s?"
  search_tags: false
  group: "console"
  include_in_short_name: true

enhancement_chip:
  pattern: "\\(Enhancement Chip\\)"
  group: "console"
  include_in_short_name: true

# DEMOS
barai:
  pattern: "\\(@barai\\)"
  group: "demos"
  include_in_short_name: true

demo:
  pattern: "\\((?:\\w[-.]?\\s*)*Demo(?:(?:,?\\s|-)[\\w0-9\\.]*)*\\)"
  group: "demos"
  include_in_short_name: true

kiosk:
  pattern: "\\((?:\\w-?\\s*)*?Kiosk,?(?:\\s\\w*?)*\\)|Kiosk Demo Disc|(PSP System|PS2) Kiosk"
  group: "demos"
  search_tags: false
  include_in_short_name: true

preview:
  pattern: "\\(Preview\\)"
  group: "demos"
  include_in_short_name: true

sample:
  pattern: "\\(Sample(?:\\s[0-9]*|\\s\\d{4}-\\d{2}-\\d{2})?\\)"
  group: "demos"
  include_in_short_name: true

taikenban_brackets:
  pattern: "\\((.*?)Taikenban(.*?)\\)"
  search_tags: false
  group: "demos"
  include_in_short_name: true

taikenban:
  pattern: "Taikenban"
  search_tags: false
  group: "demos"
  include_in_short_name: true

trial:
  pattern: "\\(Trial (Disc|Edition|Version|ver\\.)\\)"
  group: "demos"
  include_in_short_name: true

trial_non_bracket:
  pattern: "Trial (Disc|Edition|Version|ver\\.)"
  search_tags: false
  group: "demos"
  include_in_short_name: true

# PRE-PRODUCTION
alpha:
  pattern: "\\((?:\\w*?\\s)*Alpha(?:\\s\\d+)?\\)"
  group: "preproduction"

beta:
  pattern: "\\((?:\\w*?\\s)*Beta(?:\\s\\d+)?\\)"
  group: "preproduction"

debug:
  pattern: "\\(Debug\\)"
  group: "preproduction"

dev:
  pattern: "\\(Dev\\)"
  group: "preproduction"

prepro:
  pattern: "\\((?:Pre-production|Prerelease)\\)"
  group: "preproduction"

proto:
  pattern: "\\((?:\\w*?\\s)*Proto(?:type)?(?:\\s\\d+)?\\)"
  group: "preproduction"

# PROMOTIONAL
promo:
  pattern: "EPK|Press Kit|\\(Promo\\)"
  group: "promotional"
  search_tags: false
  include_in_short_name: true

# VERSIONS AND REVISIONS
version_no:
  pattern: "\\(v[\\.0-9].*?\\)"
  type: "str"
  group: "version"

long_version:
  pattern: "(?!Version Vol\\.|Version \\(|Version$|Version -|Version \\d-)(?: - )?\\(?(?:\\((?:\\w[\\.\\-]?\\s*)*|)[Vv]ers(?:ion|ao)\\s?(?:[\\d\\.\\-]+)+[A-Za-z]?(?: (?:\\d-?)+)?.*?(?:(?:\\w[\\.\\-]?\\s*)*\\))?"
  type: "str"
  transform_pattern: ".*([\\d\\.\\-]+)"
  transform_repl: "v\\1"
  group: "version"

revision:
  pattern: "\\(R[eE][vV](?:[ -][0-9A-Z].*?)?\\)"
  type: "str"
  transform_pattern: "R[eE][vV][ -]([0-9A-Z].*?)?"
  transform_repl: "v\\1"

# UNLICENSED
aftermarket:
  pattern: "\\(Aftermarket\\)"
  group: "unlicensed"

homebrew:
  pattern: "\\(Homebrew\\)"
  group: "unlicensed"
  include_in_short_name: true

pirate:
  pattern: "\\(Pirate\\)"
  group: "pirate"

unl:
  pattern: "\\(Unl\\)"
  group: "unlicensed"

# IMPROVED VERSIONS
c_and_e:
  pattern: "\\(C&E\\)"
  group: "improved_version"

cart_present:
  pattern: "\\(Cart Present\\)"
  group: "improved_version"

cgb_sgb_enhanced:
  pattern: "\\(CGB\\+SGB Enhanced\\)"
  group: "improved_version"

controller_set:
  pattern: "\\(Controller Set\\)"
  group: "improved_version"

culture_publishers:
  pattern: "\\(Culture Publishers\\)"

dx_pack:
  pattern: "\\(DX Pack\\)"
  group: "improved_version"

ebkore_plus:
  pattern: "\\(ebKore Plus\\)"
  group: "improved_version"

edc:
  pattern: "\\(EDC\\)"
  group: "improved_version"

enhanced:
  pattern: "\\(Enhanced\\)"
  group: "improved_version"

gb_compatible:
  pattern: "\\(GB Compatible\\)"
  group: "improved_version"

gba_enhanced:
  pattern: "\\(GBA Enhanced\\)"
  group: "improved_version"

gentei:
  pattern: "\\((?:(?!\\(|Gentei.*?)[\\s\\S])*Gentei.*?\\)"
  group: "improved_version"

gps_receiver_doukonban:
  pattern: "\\(GPS Receiver Doukonban\\)"
  group: "improved_version"

ideatek:
  pattern: "\\(Idea-Tek\\)"
  group: "improved_version"

ie_institute:
  pattern: "\\(IE Institute\\)"
  group: "improved_version"

imagineer:
  pattern: "\\(Imagineer\\)"
  group: "improved_version"

infinity_plus:
  pattern: "\\(Infinity Plus\\)"
  group: "improved_version"

later:
  pattern: "\\(Later\\)"
  group: "improved_version"

mega_soft:
  pattern: "\\(Mega Soft\\)"
  group: "improved_version"

microphone_doukoban:
  pattern: "\\(Microphone Doukonban\\)"
  group: "improved_version"

nina_03:
  pattern: "\\(NINA-03\\)"
  group: "improved_version"

nina_06:
  pattern: "\\(NINA-06\\)"
  group: "improved_version"

np:
  pattern: "\\(NP\\)"
  group: "improved_version"

premium_pack:
  pattern: "\\(Premium Pack\\)"
  group: "improved_version"

psone_books:
  pattern: "\\(PSone Books\\)"
  group: "improved_version"

renkaban:
  pattern: "\\(Renkaban\\)"
  group: "improved_version"

rumble_verion:
  pattern: "\\(Rumble Version\\)"
  group: "improved_version"

sachen:
  pattern: "\\(Sachen\\)"
  group: "improved_version"

sgb_enhanced:
  pattern: "\\(SGB Enhanced\\)"
  group: "improved_version"

sgb_enhanced_gb_compatible:
  pattern: "\\(SGB Enhanced, GB Compatible\\)"
  group: "improved_version"

subor_keyboard:
  pattern: "\\(Subor Keyboard\\)"
  group: "improved_version"

super_mega:
  pattern: "\\(Super Mega\\)"
  group: "improved_version"

super_value_set:
  pattern: "\\(Super Value Set\\)"
  group: "improved_version"

tatacon_doukon_set:
  pattern: "\\(Tatacon Doukon Set\\)"
  group: "improved_version"

tokubetsu:
  pattern: "\\((?:(?!\\(|Tokubetsu-ban.*?)[\\s\\S])*Tokubetsu-ban.*?\\)"
  group: "improved_version"

txc:
  pattern: "\\(TXC\\)"
  group: "improved_version"

usb_mic_doukonban:
  pattern: "\\(USB Mic Doukonban\\)"
  group: "improved_version"

# BUDGET EDITIONS

artdink:
  pattern: "\\(Artdink Best Choice\\)"
  group: "budget_edition"

best_collection:
  pattern: "\\(Best Collection\\)"
  group: "budget_edition"

best_of_the_best:
  pattern: "\\(Best of the Best\\)"
  group: "budget_edition"

best_hit_selection:
  pattern: "\\(Best Hit Selection\\)"
  group: "budget_edition"

best_wing:
  pattern: "\\(Best Wing 2800\\)"
  group: "budget_edition"

bps_the_choice:
  pattern: "\\(BPS the Choice\\)"
  group: "budget_edition"

cyclone_best:
  pattern: "\\(Cyclone's Best\\)"
  group: "budget_edition"

digicube:
  pattern: "\\(DigiCube Best Selection\\)"
  group: "budget_edition"

ea_best_hits:
  pattern: "\\(EA Best Hits\\)"
  group: "budget_edition"

fukyuuban:
  pattern: "\\(Fukyuuban\\)"
  group: "budget_edition"

fukyuuban_1500:
  pattern: "\\(Fukyuuban 1500\\)"
  group: "budget_edition"

greatest_hits:
  pattern: "\\(Greatest Hits\\)"
  group: "budget_edition"

gust_best_price:
  pattern: "\\(Gust Best Price\\)"
  group: "budget_edition"

honkakuha:
  pattern: "\\(Honkakuha de 1300\\)"
  group: "budget_edition"

koei_the_best:
  pattern: "\\(Koei the Best\\)"
  group: "budget_edition"

major_wave:
  pattern: "\\(Major Wave\\)"
  group: "budget_edition"

mega_hits:
  pattern: "\\(Mega Hits!\\)"

playstation_the_best:
  pattern: "\\(PlayStation the Best\\)"
  group: "budget_edition"

playstation_the_best_for_family:
  pattern: "\\(PlayStation the Best for Family\\)"
  group: "budget_edition"

playstation_2_the_best:
  pattern: "\\(PlayStation 2 the Best\\)"
  group: "budget_edition"

psp_the_best:
  pattern: "\\(PSP The Best\\)"
  group: "budget_edition"

rockstar_classics:
  pattern: "\\(Rockstar Classics\\)"
  group: "budget_edition"

spike_library:
  pattern: "\\(Spike Library\\)"
  group: "budget_edition"

spike_the_best:
  pattern: "\\(Spike the Best\\)"
  group: "budget_edition"

super_value_2800:
  pattern: "\\(Super Value 2800\\)"
  group: "budget_edition"

ultimate_hits:
  pattern: "\\(Ultimate Hits\\)"
  group: "budget_edition"

value_1500:
  pattern: "\\(Value 1500\\)"
  group: "budget_edition"

# MODERN VERSIONS

3ds_virtual_console:
  pattern: "\\((?:\\w*?,?\\s)*3DS Virtual Console(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

battle_net:
  pattern: "\\(Battle\\.net\\)"
  group: "modern_version"

castlevania_anniversary:
  pattern: "\\(Castlevania Anniversary Collection\\)"
  group: "modern_version"

castlevania_advance:
  pattern: "\\(Castlevania Advance Collection\\)"
  group: "modern_version"

capcom_classics_mini_mix:
  pattern: "\\(Capcom Classics Mini Mix\\)"
  group: "modern_version"

capcom_town:
  pattern: "\\(Capcom Town\\)"
  group: "modern_version"

collection_of_mana:
  pattern: "\\(Collection of Mana\\)"
  group: "modern_version"

columbus_circle:
  pattern: "\\(Columbus Circle\\)"
  group: "modern_version"

contra_anniversary:
  pattern: "\\(Contra Anniversary Collection\\)"
  group: "modern_version"

cowabunga_collection:
  pattern: "\\(The Cowabunga Collection\\)"
  group: "modern_version"

cowabunga_collection_the:
  pattern: "\\(Cowabunga Collection, The\\)"
  group: "modern_version"

cozmic_collection:
  pattern: "\\(Darius Cozmic Collection\\)"
  group: "modern_version"

disney_afternoon_collection:
  pattern: "\\(The Disney Afternoon Collection\\)"
  group: "modern_version"

disney_classic_games:
  pattern: "\\(Disney Classic Games\\)"
  group: "modern_version"

e_reader_edition:
  pattern: "\\(e-Reader Edition\\)"
  group: "modern_version"

gamecube:
  pattern: "\\(Game[Cc]ube.*?\\)"
  group: "modern_version"

iam8bit:
  pattern: "\\(iam8bit\\)"
  group: "modern_version"

konami_collector_series:
  pattern: "\\(Konami Collector's Series\\)"
  group: "modern_version"

mega_man_legacy_collection:
  pattern: "\\(Mega Man Legacy Collection\\)"
  group: "modern_version"

mega_man_x_legacy:
  pattern: "\\(Mega Man X Legacy Collection\\)"
  group: "modern_version"

namco_anthology_1:
  pattern: "\\(Namco Anthology 1.*?\\)"
  group: "modern_version"

namco_anthology_2:
  pattern: "\\(Namco Anthology 2.*?\\)"
  group: "modern_version"

namcot_collection:
  pattern: "\\s?\\(Namcot Collection.*?\\)"
  group: "modern_version"

namco_museum_archives:
  pattern: "\\(Namco Museum Archives Vol [0-9]\\)"
  group: "modern_version"

ninja_jajamaru_retro:
  pattern: "\\(Ninja JaJaMaru Retro Collection\\)"
  group: "modern_version"

qubyte_classic:
  pattern: "\\(QUByte Classics\\)"
  group: "modern_version"

retro_bit:
  pattern: "\\(Retro-Bit\\)"
  group: "modern_version"

retro_bit_generations:
  pattern: "\\(Retro-Bit Generations\\)"
  group: "modern_version"

rockman_123:
  pattern: "\\(Rockman 123\\)"
  group: "modern_version"

seiken_denetsu_collection:
  pattern: "\\(Seiken Densetsu Collection\\)"
  group: "modern_version"

snk_40th_anniversary:
  pattern: "\\(SNK 40th Anniversary Collection\\)"
  group: "modern_version"

steam:
  pattern: "\\(Steam\\)"
  group: "modern_version"

switch:
  pattern: "\\(Switch\\)"
  group: "modern_version"

switch_version:
  pattern: "\\s?\\((?:\\w*?,?\\s)*Switch Version(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

switch_release:
  pattern: "\\s?\\((?:\\w*?,?\\s)*Switch Release(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

switch_online:
  pattern: "\\s?\\((?:\\w*?,?\\s)*Switch Online(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

virtual_console:
  pattern: "\\(Virtual Console\\)"
  group: "modern_version"

wii:
  pattern: "\\(Wii\\)"
  group: "modern_version"

wii_virtual_console:
  pattern: "\\((?:\\w*?,?\\s)*Wii Virtual Console(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

wiiu_virtual_console:
  pattern: "\\((?:\\w*?,?\\s)*Wii\\s?U Virtual Console(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

wii_and_wiiu_virtual_console:
  pattern: "\\((?:\\w*?,?\\s)*Wii Virtual Console, Wii\\s?U Virtual Console(?:,?\\s\\w*?)*\\)"
  group: "modern_version"

# DEMOTED VERSIONS
arcade:
  pattern: "\\(Arcade\\)"
  group: "demoted_version"

asder:
  pattern: "\\(Asder\\)"
  group: "demoted_version"

caltron:
  pattern: "\\(Caltron\\)"
  group: "demoted_version"

competition_cart:
  pattern: "\\(Competition Cart.*?\\)"
  group: "demoted_version"

coolboy:
  pattern: "\\(Coolboy\\)"
  group: "demoted_version"

debug_version:
  pattern: "\\(Debug Version\\)"
  group: "demoted_version"

digital:
  pattern: "\\(Digital\\)"
  group: "demoted_version"

earlier:
  pattern: "\\(Earlier\\)"
  group: "demoted_version"

early:
  pattern: "\\(Early\\)"
  group: "demoted_version"

evercade:
  pattern: "\\(Evercade\\)"
  group: "demoted_version"

famicombox:
  pattern: "\\(FamicomBox\\)"
  group: "demoted_version"

fs005:
  pattern: "\\(FS005\\)"
  group: "demoted_version"

hwang_shinwei:
  pattern: "\\(Hwang Shinwei\\)"
  group: "demoted_version"

jncota:
  pattern: "\\(Jncota\\)"
  group: "demoted_version"

jy_company:
  pattern: "\\(J\\.Y\\. Company\\)"
  group: "demoted_version"

kaiser:
  pattern: "\\(Kaiser\\)"
  group: "demoted_version"

kickstarter:
  pattern: "\\(Kickstarter\\)"
  group: "demoted_version"

kickstarter_evercade:
  pattern: "\\(Kickstarter\\, Evercade\\)"
  group: "demoted_version"

kickstarter_version:
  pattern: "\\(Kickstarter Version\\)"
  group: "demoted_version"

limited_run:
  pattern: "\\(Limited Run Games\\)"
  group: "demoted_version"

mb91:
  pattern: "\\(MB-91\\)"
  group: "demoted_version"

mbc3:
  pattern: "\\(MBC3\\)"
  group: "demoted_version"

mbc5:
  pattern: "\\(MBC5\\)"
  group: "demoted_version"

micro_genius:
  pattern: "\\(Micro Genius\\)"
  group: "demoted_version"

nintendoage:
  pattern: "\\(NintendoAge\\)"
  group: "demoted_version"

no_cart_present:
  pattern: "\\(No Cart Present\\)"
  group: "demoted_version"

not_for_resale:
  pattern: "\\(Not for Resale\\)"
  group: "demoted_version"

piko_interactive:
  pattern: "\\(Piko Interactive\\)"
  group: "demote_version"

pixel_heart:
  pattern: "\\(Pixel Heart\\)"
  group: "demoted_version"

rerelease:
  pattern: "\\(Rerelease\\)"
  group: "demoted_version"

reprint:
  pattern: "\\(Reprint\\)"
  group: "demoted_version"

retrozone:
  pattern: "\\(RetroZone\\)"
  group: "demoted_version"

shokai_seisanban:
  pattern: "\\(Shokai Seisanban\\)"
  group: "demoted_version"

whirlwind_manu:
  pattern: "\\(Whirlwind Manu\\)"
  group: "demoted_version"

# GENERALLY IGNORE

60_pin_cart:
  pattern: "\\(60 pin cart\\)"

72_pin_cart:
  pattern: "\\(72 pin cart\\)"

strictly_limited:
  pattern: "\\(Strictly Limited Games\\)"

multi_tap_doukoban:
  pattern: "\\(Multi Tap.*?Doukonban\\)"

ntdec:
  pattern: "\\(NTDEC\\)"

ntsc:
  pattern: "([?:-][\\s])?[(]?NTSC\\)?"
  flags: "NOFLAG"

pal:
  pattern: "([?:-][\\s])?[(]?PAL(?: [a-zA-Z]+| 50[Hh]z)?(?:\\)?| (?=\\())"
  flags: "NOFLAG"

supervision:
  pattern: "\\(SuperVision\\)"

43_406_pcb:
  pattern: "\\(43-406 PCB\\)"

fw:
  pattern: "\\(FW[0-9].*?\\)"

u_numbers:
  pattern: "\\(U[CLT][EJUS][BST]-\\d{5}\\)"

p_s_numbers:
  pattern: "\\s?\\([PS][BCL][EKPU][ADHMNSX]-\\d{5}\\)"

product_ids:
  pattern: "\\((?:A[BDEFNPS]|B[58DFJNPT]|CX|FT|JE|K[AFIKMRZ]|PN|QA|RC|S[KN]|T[ABCJQ]|V[BEJKLMW]|Y[XW])[ABCDEFGHIKJMLNPQSTUVWYZ0-9][DEJPVXYZ]\\)"