450 lines
67 KiB
Plaintext
450 lines
67 KiB
Plaintext
|
||
|
||
|
||
[38;5;14m[1m![0m[38;5;12mAwesome Regex[39m[38;5;14m[1m (media/awesome-regex-banner.svg)[0m[38;5;12m (https://github.com/slevithan/awesome-regex)[39m
|
||
|
||
[38;5;14m[1m![0m[38;5;12mAwesome[39m[38;5;14m[1m (https://awesome.re/badge-flat2.svg)[0m[38;5;12m (https://awesome.re) [39m
|
||
|
||
|
||
[38;5;12mAwesome Regex curates the best regular expression tools, tutorials, libraries, and other resources, covering all major regex flavors.[39m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;14m[1mRegular[0m[38;5;14m[1m [0m[38;5;14m[1mexpressions[0m[38;5;12m [39m[38;5;12m(https://en.wikipedia.org/wiki/Regular_expression)[39m[38;5;12m [39m[38;5;12m(regex[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mregexp)[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mpowerful[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mconcise[39m[38;5;12m [39m[38;5;12mway[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12msearch,[39m[38;5;12m [39m[38;5;12mparse,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mprocess[39m[38;5;12m [39m[38;5;12mtext.[39m[38;5;12m [39m[38;5;12mThey're[39m[38;5;12m [39m[38;5;12mbuilt[39m[38;5;12m [39m[38;5;12minto[39m[38;5;12m [39m[38;5;12mmany[39m[38;5;12m [39m[38;5;12mprogramming[39m[38;5;12m [39m[38;5;12mlanguages,[39m[38;5;12m [39m[38;5;12mtext[39m[38;5;12m [39m[38;5;12meditors,[39m[38;5;12m [39m[38;5;12mIDEs,[39m[38;5;12m [39m[38;5;12mdatabase[39m[38;5;12m [39m[38;5;12mengines,[39m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mword[39m[38;5;12m [39m[38;5;12mprocessors,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mother[39m[38;5;12m [39m[38;5;12mtools.[39m
|
||
|
||
[38;5;12mContributions are welcome. Add links through pull requests ([39m[38;5;14m[1mguidelines[0m[38;5;12m (CONTRIBUTING.md)).[39m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mA brief glossary of regular expression terms as used in this list.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegex engine:[0m[38;5;12m Software that interprets and executes regular expressions, either built into a programming language or as a standalone library.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mRegex[0m[38;5;14m[1m [0m[38;5;14m[1mflavor:[0m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12munique[39m[38;5;12m [39m[38;5;12mset[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mregex[39m[38;5;12m [39m[38;5;12msyntax[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mbehavior.[39m[38;5;12m [39m[38;5;12mBasic[39m[38;5;12m [39m[38;5;12msyntax[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mtypically[39m[38;5;12m [39m[38;5;12mshared[39m[38;5;12m [39m[38;5;12macross[39m[38;5;12m [39m[38;5;12mflavors,[39m[38;5;12m [39m[38;5;12mbut[39m[38;5;12m [39m[38;5;12mmore[39m[38;5;12m [39m[38;5;12madvanced[39m[38;5;12m [39m[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12moften[39m[38;5;12m [39m[38;5;12mvary,[39m[38;5;12m [39m[38;5;12msometimes[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12msubtle[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mincompatible[39m[38;5;12m [39m[38;5;12mways.[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mflavor[39m[38;5;12m [39m[38;5;12mmight[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mshared[39m[38;5;12m [39m[38;5;12macross[39m[38;5;12m [39m[38;5;12mmultiple[39m[38;5;12m [39m[38;5;12mimplementations[39m[38;5;12m [39m
|
||
[38;5;12mor[39m[38;5;12m [39m[38;5;12mprogramming[39m[38;5;12m [39m[38;5;12mlanguages.[39m
|
||
[38;5;12m - Ex: The “JavaScript” flavor is defined by the ECMAScript spec; implemented by multiple engines (V8, etc.).[39m
|
||
[38;5;12m - Ex: The “PCRE” flavor is the PCRE2 library, used by numerous programming languages and tools.[39m
|
||
[38;5;12m - Ex: Ruby swapped its regex implementation twice from version 1.8 → 1.9 → 2.0, so each used a distinct flavor. The Ruby 2.0+ flavor is referred to here as either “Ruby” or “Onigmo” (the underlying regex library).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mNon-backtracking[0m[38;5;14m[1m [0m[38;5;14m[1mengine:[0m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mregex[39m[38;5;12m [39m[38;5;12mimplementation[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12muses[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mnon-backtracking[39m[38;5;12m [39m[38;5;12malgorithm[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mruns[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mlinear[39m[38;5;12m [39m[38;5;12mtime.[39m[38;5;12m [39m[38;5;12mThis[39m[38;5;12m [39m[38;5;12mrules[39m[38;5;12m [39m[38;5;12mout[39m[38;5;12m [39m[38;5;12mworst[39m[38;5;12m [39m[38;5;12mcase[39m[38;5;12m [39m[38;5;12mperformance[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12msuperlinear[39m[38;5;12m [39m[38;5;12mbacktracking,[39m[38;5;12m [39m[38;5;12mbut[39m[38;5;12m [39m[38;5;12mit's[39m[38;5;12m [39m[38;5;12mslower[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12msome[39m[38;5;12m [39m[38;5;12mpatterns[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mprecludes[39m[38;5;12m [39m[38;5;12msome[39m[38;5;12m [39m[38;5;12museful[39m[38;5;12m [39m
|
||
[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12mlike[39m[38;5;12m [39m[38;5;12mbackreferences.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mFeatured resource[0m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[48;5;235m[38;5;249m[49m[39m
|
||
[48;5;235m[38;5;249m[49m[39m
|
||
[38;5;12m [39m
|
||
|
||
|
||
[38;5;14m[1mRegex+[0m[38;5;12m [39m[38;5;12m(https://github.com/slevithan/regex)[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mlightweight[39m[38;5;12m [39m[38;5;12mJavaScript[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mmore[39m[38;5;12m [39m[38;5;12mreadable,[39m[38;5;12m [39m[38;5;12mhigh-performance,[39m[38;5;12m [39m[38;5;12mnative[39m[38;5;12m [39m[38;5;12mJavaScript[39m[38;5;12m [39m[38;5;12mregexes[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mpowerful[39m[38;5;12m [39m[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12mincluding[39m[38;5;12m [39m[38;5;12mfree[39m[38;5;12m [39m[38;5;12mspacing,[39m[38;5;12m [39m[38;5;12matomic[39m[38;5;12m [39m[38;5;12mgroups,[39m[38;5;12m [39m[38;5;12mpossessive[39m[38;5;12m [39m[38;5;12mquantifiers,[39m[38;5;12m [39m[38;5;12msubroutines,[39m[38;5;12m [39m
|
||
[38;5;12msubroutine[39m[38;5;12m [39m[38;5;12mdefinition[39m[38;5;12m [39m[38;5;12mgroups,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcontext-aware[39m[38;5;12m [39m[38;5;12minterpolation.[39m
|
||
|
||
[38;2;255;187;0m[4mContents[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mTesters[0m[38;5;12m (#testers)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSyntax-free regex builders[0m[38;5;12m (#syntax-free-regex-builders)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVisualizers[0m[38;5;12m (#visualizers)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGrep-like tools[0m[38;5;12m (#grep-like-tools)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mTutorials[0m[38;5;12m (#tutorials)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegex engines[0m[38;5;12m (#regex-engines)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mDocumentation[0m[38;5;12m (#documentation)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mSource code[0m[38;5;12m (#source-code)[39m
|
||
[38;5;12m - [39m[38;5;14m[1mFlavor differences[0m[38;5;12m (#flavor-differences)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPerformance[0m[38;5;12m (#performance)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCollections of patterns[0m[38;5;12m (#collections-of-patterns)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mJavaScript regex libraries[0m[38;5;12m (#javascript-regex-libraries)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mJavaScript regex evolution[0m[38;5;12m (#javascript-regex-evolution)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBooks[0m[38;5;12m (#books)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mArticles[0m[38;5;12m (#articles)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCommunities[0m[38;5;12m (#communities)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMiscellaneous[0m[38;5;12m (#miscellaneous)[39m
|
||
|
||
[38;2;255;187;0m[4mTesters[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mFor building, testing, and playing with regexes.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mregex101[0m[38;5;12m (https://regex101.com/) - [39m[38;5;14m[1mBest free and best web-based tester[0m[38;5;12m.[39m
|
||
[38;5;12m - Flavors: Java, JavaScript, .NET, PCRE, RE2, Rust, and emulates Python.[39m
|
||
[38;5;12m - Includes regex debugger (PCRE only).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegexBuddy[0m[38;5;12m (https://www.regexbuddy.com/) (, $40) - [39m[38;5;14m[1mBest tester[0m[38;5;12m.[39m
|
||
[38;5;12m - Flavors: Emulates hundreds of flavors/versions, with deep knowledge of differences.[39m
|
||
[38;5;12m - Includes regex debugger.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegExr[0m[38;5;12m (https://regexr.com/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/gskinner/regexr/)[0m[48;2;30;30;40m[38;5;13m[3m - [0m[48;2;30;30;40m[38;5;14m[1m[3mBest open source tester[0m[48;2;30;30;40m[38;5;13m[3m.[0m
|
||
[38;5;12m - Flavors: JavaScript, PCRE.[39m
|
||
[38;5;12m - Languages: 🇺🇸, 🇨🇳 ([39m[38;5;14m[1mfork[0m[38;5;12m (https://regexr-cn.com/)).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegexLearn[0m[38;5;12m (https://regexlearn.com/playground) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/aykutkardas/regexlearn.com/blob/develop/src/pages/%5Blang%5D/playground.tsx)[0m[48;2;30;30;40m[38;5;13m[3m - [0m[48;2;30;30;40m[38;5;14m[1m[3mBest multilingual tester[0m[48;2;30;30;40m[38;5;13m[3m (JavaScript).[0m
|
||
[38;5;12m - Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷, 🇧🇷, 🇨🇿, 🇬🇪.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mregexplained[0m[38;5;12m (https://regexplained.com/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/LeaVerou/regexplained)[0m[48;2;30;30;40m[38;5;13m[3m - [0m[48;2;30;30;40m[38;5;14m[1m[3mBest tester for presentations[0m[48;2;30;30;40m[38;5;13m[3m (JavaScript).[0m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;14m[1mCommand line[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mpcre2test[0m[38;5;12m (https://pcre2project.github.io/pcre2/doc/pcre2test/) - Includes regex debugger. Flavor: PCRE.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mrxrx[0m[38;5;12m (https://metacpan.org/dist/Regexp-Debugger/view/bin/rxrx) - Includes regex debugger ([39m[38;5;14m[1mvideo intro[0m[38;5;12m (https://www.youtube.com/watch?v=zcSFIUiMgAs)). Flavor: Perl.[39m
|
||
|
||
[38;5;14m[1mBy flavor[0m
|
||
|
||
[38;5;12m- JavaScript: [39m[38;5;14m[1mRegViz[0m[38;5;12m (http://regviz.org/).[39m
|
||
[38;5;12m- .NET: [39m[38;5;14m[1mRegex Storm[0m[38;5;12m (http://regexstorm.net/tester) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/lonekorean/regex-storm)[0m[48;2;30;30;40m[38;5;13m[3m .[0m
|
||
[38;5;12m- PCRE: [39m[38;5;14m[1mPHP Live Regex[0m[38;5;12m (https://www.phpliveregex.com/).[39m
|
||
[38;5;12m- Python: [39m[38;5;14m[1mPythex[0m[38;5;12m (https://pythex.org/).[39m
|
||
[38;5;12m- Ruby: [39m[38;5;14m[1mRubular[0m[38;5;12m (https://rubular.com/).[39m
|
||
[38;5;12m- sed: [39m[38;5;14m[1mGNU sed REPL[0m[38;5;12m (https://sed.js.org/).[39m
|
||
[38;5;12m- Swift: [39m[38;5;14m[1mSwift Regex[0m[38;5;12m (https://swiftregex.com/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/swiftfiddle/swiftregex)[0m[48;2;30;30;40m[38;5;13m[3m - Includes regex debugger, DSL builder.[0m
|
||
|
||
[38;5;14m[1mMultiple flavors[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mCyrilEx[0m[38;5;12m (https://extendsclass.com/regex-tester.html) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/cyrilbois/cyrilex)[0m[48;2;30;30;40m[38;5;13m[3m - Java, JavaScript, MySQL, PHP, Python, Ruby.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mPatterns[0m[38;5;12m (https://krillapps.com/patterns/) (, $3) - Bash, Emacs, grep, Java, Oniguruma, PCRE, POSIX BRE, POSIX ERE, Ruby, sed.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegexPlanet[0m[38;5;12m (https://www.regexplanet.com/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/regexplanet)[0m[48;2;30;30;40m[38;5;13m[3m - Go, Java, JavaScript (Bun, Deno, Node.js), .NET, Perl, PHP, PostgreSQL, Python, Ruby, Rust, Swift, Tcl, XRegExp.[0m
|
||
|
||
|
||
[38;2;255;187;0m[4mSyntax-free regex builders[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mBuild regexes without writing regex syntax or code.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mChatGPT[0m[38;5;12m (https://chat.openai.com/) (and other LLMs) - Ex: [39m[48;2;30;30;40m[38;5;13m[3m"create a regex that matches [0m[48;5;235m[38;5;249m[3mX[0m[48;2;30;30;40m[38;5;13m[3m and explain it step by step"[0m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegexMagic[0m[38;5;12m (https://www.regexmagic.com/) (, $40) - Generate regexes using samples and rules.[39m
|
||
[38;5;12m - Flavors: Emulates hundreds of flavors/versions.[39m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegex Generator[0m[38;5;12m (https://regex-generator.olafneumann.org/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/noxone/regex-generator)[0m[48;2;30;30;40m[38;5;13m[3m - Generate simple regexes from a sample text.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mRegex.ai[0m[38;5;12m (https://regex.ai/) - Mark samples in a text and use AI to generate potential regexes.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mVisualizers[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mVisualize how your regular expressions are structured or operate.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegex Vis[0m[38;5;12m (https://regex-vis.com/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/Bowen7/regex-vis)[0m[48;2;30;30;40m[38;5;13m[3m - Create railroad diagrams, with visual editor. Flavor: JavaScript.[0m
|
||
[38;5;12m - Languages: 🇺🇸, 🇨🇳.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegulex[0m[38;5;12m (https://jex.im/regulex/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/CJex/regulex)[0m[48;2;30;30;40m[38;5;13m[3m - Create railroad diagrams. Flavor: JavaScript.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mNodexr[0m[38;5;12m (https://www.nodexr.net/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/Jcparkyn/nodexr)[0m[48;2;30;30;40m[38;5;13m[3m - Graphical editor with visual hierarchy. Flavor: .NET.[0m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegex Nodes[0m[38;5;12m (https://johannesvollmer.com/regex-nodes/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/johannesvollmer/regex-nodes)[0m[48;2;30;30;40m[38;5;13m[3m - Graphical editor with visual hierarchy. Flavor: JavaScript.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mDebuggex[0m[38;5;12m (https://www.debuggex.com/) - Create railroad diagrams. Flavors: JavaScript, PCRE, Python.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegexper[0m[38;5;12m (https://regexper.com/) [39m[38;5;12m*[39m[38;5;12mGitLab[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://gitlab.com/javallone/regexper-static)[0m[48;2;30;30;40m[38;5;13m[3m - Create railroad diagrams. Flavor: JavaScript.[0m
|
||
|
||
|
||
[38;2;255;187;0m[4mGrep-like tools[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mSearch and replace through files.[0m
|
||
|
||
[38;2;255;187;0m[4mCommand line[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mripgrep[0m[38;5;12m (https://github.com/BurntSushi/ripgrep) - Better and faster grep. Recursively searches directories while respecting gitignore rules and skipping hidden/binary files.[39m
|
||
[38;5;12m - Flavors: Rust (default), PCRE.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mnomino[0m[38;5;12m (https://github.com/yaa110/nomino) - Rename files uses regexes.[39m
|
||
[38;5;12m - Flavor: Rust.[39m
|
||
|
||
[38;5;12m➕ [39m[38;5;14m[1mSee also:[0m[38;5;12m [39m[38;5;14m[1mFeature comparison of grep-like tools[0m[38;5;12m (https://beyondgrep.com/feature-comparison/).[39m
|
||
|
||
[38;2;255;187;0m[4mGUI[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mAba Search and Replace[0m[38;5;12m (https://www.abareplace.com/) (, $30) - Displays matches as you type.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPowerGREP[0m[38;5;12m (https://www.powergrep.com/) (, $159) - Can search through archives, binary files, PDFs, docs/sheets, emails, etc., via its GUI or the command line.[39m
|
||
[38;5;12m - Flavors: Emulates hundreds of flavors/versions.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPowerRename[0m[38;5;12m (https://github.com/microsoft/PowerToys) () - Rename files using regexes.[39m
|
||
|
||
[38;2;255;187;0m[4mTutorials[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mLearn how to use regular expressions.[0m
|
||
|
||
[38;2;255;187;0m[4mTraditional[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegular-Expressions.info[0m[38;5;12m (https://www.regular-expressions.info/) - Covers numerous regex flavors.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mThe Modern JavaScript Tutorial: Regular expressions[0m[38;5;12m (https://javascript.info/regular-expressions) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/javascript-tutorial/en.javascript.info)[0m[48;2;30;30;40m[38;5;13m[3m - Guide to using regexes in JavaScript.[0m
|
||
[38;5;12m - Languages: 🇺🇸, 🇪🇸, 🇫🇷, 🇮🇹, 🇯🇵, 🇷🇺, 🇺🇦, 🇨🇳 (partial for [39m[38;5;14m[1mothers[0m[38;5;12m (https://javascript.info/translate)).[39m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRexEgg[0m[38;5;12m (https://rexegg.com/) - Detailed tutorial with advanced topics.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlearnbyexample[0m[38;5;12m [39m[38;5;12m(https://learnbyexample.github.io/books/)[39m[38;5;12m [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m(https://github.com/learnbyexample)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m-[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mEbooks[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mon[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mregexes[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m([0m[48;2;30;30;40m[38;5;14m[1m[3mJavaScript[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m(https://learnbyexample.github.io/learn_js_regexp/),[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mPython[0m[48;2;30;30;40m[38;5;13m[3m [0m
|
||
[48;2;30;30;40m[38;5;13m[3m(https://learnbyexample.github.io/py_regular_expressions/),[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mRuby[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m(https://learnbyexample.github.io/Ruby_Regexp/))[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mcommand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mline[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mtext[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mprocessing.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mRegular Expressions for Regular Folk[0m[38;5;12m (https://refrf.dev/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/shreyasminocha/regex-for-regular-folk)[0m[48;2;30;30;40m[38;5;13m[3m - Visual, example-based ebook for beginners.[0m
|
||
|
||
|
||
[38;2;255;187;0m[4mWith interactive exercises[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegexLearn[0m[38;5;12m (https://regexlearn.com/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/aykutkardas/regexlearn.com)[0m[48;2;30;30;40m[38;5;13m[3m - Interactive tutorial and practice problems.[0m
|
||
[38;5;12m - Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷, 🇧🇷, 🇨🇿, 🇬🇪.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegexOne[0m[38;5;12m (https://regexone.com/) - Interactive tutorial and practice problems.[39m
|
||
|
||
[38;2;255;187;0m[4mVideos[0m
|
||
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mDemystifying Regular Expressions[0m[38;5;12m (https://www.youtube.com/watch?v=M7vDtxaD7ZU) - Great presentation for beginners, by Lea Verou at HolyJS 2017 (1hr 12m).[39m
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mLearn Regular Expressions In 20 Minutes[0m[38;5;12m (https://www.youtube.com/watch?v=rhzKDrUiJVk) - Live syntax walkthrough in a regex tester, by Kyle Cook.[39m
|
||
[38;5;12m- Many options for video courses are available on [39m[38;5;14m[1mUdemy[0m[38;5;12m (https://www.udemy.com/topic/regular-expressions/) ($).[39m
|
||
|
||
[38;2;255;187;0m[4mRegex engines[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mMajor regex implementations, built into programming languages or as standalone libraries.[0m
|
||
|
||
[38;2;255;187;0m[4mDocumentation[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mOfficial regex references and guides.[0m
|
||
|
||
[38;2;255;187;0m[4mRegex flavors[0m
|
||
|
||
[38;5;12m- Boost.Regex: [39m[38;5;14m[1mManual[0m[38;5;12m (https://boost.org/libs/regex).[39m
|
||
[38;5;12m- C++: [39m[38;5;14m[1mRegular expressions library[0m[38;5;12m (https://en.cppreference.com/w/cpp/regex).[39m
|
||
[38;5;12m- Hyperscan: [39m[38;5;14m[1mIntroduction[0m[38;5;12m (https://www.hyperscan.io/).[39m
|
||
[38;5;12m- ICU: [39m[38;5;14m[1mRegular Expressions[0m[38;5;12m (https://unicode-org.github.io/icu/userguide/strings/regexp.html).[39m
|
||
[38;5;12m- Java: [39m[38;5;14m[1mPattern[0m[38;5;12m (https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/regex/Pattern.html), [39m[38;5;14m[1mAPI[0m[38;5;12m (https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/regex/package-summary.html).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mJavaScript:[39m[38;5;12m [39m[38;5;14m[1mRegExp[0m[38;5;12m [39m[38;5;12m(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp),[39m[38;5;12m [39m[38;5;14m[1mReference[0m[38;5;12m [39m[38;5;12m(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions),[39m[38;5;12m [39m[38;5;14m[1mGuide[0m[38;5;12m [39m
|
||
[38;5;12m(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions),[39m[38;5;12m [39m[38;5;14m[1mCheatsheet[0m[38;5;12m [39m[38;5;12m(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions/Cheatsheet).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12m.NET:[39m[38;5;12m [39m[38;5;14m[1mOverview[0m[38;5;12m [39m[38;5;12m(https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expressions),[39m[38;5;12m [39m[38;5;14m[1mLanguage[0m[38;5;12m [39m[38;5;12m(https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference),[39m[38;5;12m [39m[38;5;14m[1mAPI[0m[38;5;12m [39m
|
||
[38;5;12m(https://learn.microsoft.com/en-us/dotnet/api/system.text.regularexpressions).[39m
|
||
[38;5;12m- Onigmo: [39m[38;5;14m[1mRE[0m[38;5;12m (https://github.com/k-takata/Onigmo/blob/master/doc/RE).[39m
|
||
[38;5;12m- Oniguruma: [39m[38;5;14m[1mRE[0m[38;5;12m (https://github.com/kkos/oniguruma/blob/master/doc/RE).[39m
|
||
[38;5;12m- PCRE2: [39m[38;5;14m[1mPattern[0m[38;5;12m (https://pcre2project.github.io/pcre2/doc/pcre2pattern/), [39m[38;5;14m[1mAPI[0m[38;5;12m (https://pcre2project.github.io/pcre2/doc/).[39m
|
||
[38;5;12m- Perl: [39m[38;5;14m[1mSyntax[0m[38;5;12m (https://perldoc.perl.org/perlre), [39m[38;5;14m[1mTutorial[0m[38;5;12m (https://perldoc.perl.org/perlretut), [39m[38;5;14m[1mQuick Start[0m[38;5;12m (https://perldoc.perl.org/perlrequick).[39m
|
||
[38;5;12m- Python: [39m[38;5;14m[1mre[0m[38;5;12m (https://docs.python.org/library/re.html).[39m
|
||
[38;5;12m- RE2: [39m[38;5;14m[1mSyntax[0m[38;5;12m (https://github.com/google/re2/wiki/Syntax).[39m
|
||
[38;5;12m- Rust: [39m[38;5;14m[1mregex[0m[38;5;12m (https://docs.rs/regex) - See also: [39m[38;5;14m[1mregex-lite[0m[38;5;12m (https://docs.rs/regex-lite).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mSwift:[39m[38;5;12m [39m[38;5;14m[1mRegex[0m[38;5;12m [39m[38;5;12m(https://developer.apple.com/documentation/swift/regex/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mSee[39m[38;5;12m [39m[38;5;12malso:[39m[38;5;12m [39m[38;5;14m[1mRegexBuilder[0m[38;5;12m [39m[38;5;12m(https://developer.apple.com/documentation/regexbuilder),[39m[38;5;12m [39m[38;5;14m[1mNSRegularExpression[0m[38;5;12m [39m
|
||
[38;5;12m(https://developer.apple.com/documentation/foundation/nsregularexpression).[39m
|
||
|
||
[38;5;12mℹ️[39m[38;5;12m [39m[38;5;12mRaku[39m[38;5;12m [39m[38;5;12m(formerly[39m[38;5;12m [39m[38;5;12mPerl[39m[38;5;12m [39m[38;5;12m6)[39m[38;5;12m [39m[38;5;12mreimagines[39m[38;5;12m [39m[38;5;12mregexes.[39m[38;5;12m [39m[38;5;12mSee:[39m[38;5;12m [39m[38;5;14m[1mGrammars[0m[38;5;12m [39m[38;5;12m(https://docs.raku.org/language/grammars)[39m[38;5;12m [39m[38;5;12m([39m[38;5;14m[1mtutorial[0m[38;5;12m [39m[38;5;12m(https://docs.raku.org/language/grammar_tutorial)),[39m[38;5;12m [39m[38;5;14m[1mRegexes[0m[38;5;12m [39m[38;5;12m(https://docs.raku.org/language/regexes)[39m[38;5;12m [39m[38;5;12m([39m[38;5;14m[1mbest[0m[38;5;14m[1m [0m[38;5;14m[1mpractices[0m[38;5;12m [39m
|
||
[38;5;12m(https://docs.raku.org/language/regexes-best-practices)).[39m
|
||
|
||
[38;2;255;187;0m[4mWithout own flavor[0m
|
||
|
||
[38;5;12m- Go: [39m[38;5;14m[1mregexp[0m[38;5;12m (https://pkg.go.dev/regexp) - Flavor: RE2.[39m
|
||
[38;5;12m- MySQL: [39m[38;5;14m[1mRegular Expressions[0m[38;5;12m (https://dev.mysql.com/doc/refman/en/regexp.html) - Flavor: ICU.[39m
|
||
[38;5;12m- PHP: [39m[38;5;14m[1mRegular Expressions[0m[38;5;12m (https://www.php.net/manual/en/book.pcre.php) - Flavor: PCRE.[39m
|
||
[38;5;12m- Ruby: [39m[38;5;14m[1mRegexp[0m[38;5;12m (https://docs.ruby-lang.org/en/master/Regexp.html) - Flavor: Onigmo.[39m
|
||
|
||
[38;2;255;187;0m[4mSource code[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mRead or contribute to the code behind major regex implementations.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mBoost.Regex[0m[38;5;12m (https://github.com/boostorg/regex) - Popular C++ regex library.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mHyperscan[0m[38;5;12m (https://github.com/intel/hyperscan) - Intel's high-performance library, used for [39m[38;5;14m[1mDPI[0m[38;5;12m (https://en.wikipedia.org/wiki/Deep_packet_inspection).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mICU[0m[38;5;12m (https://github.com/unicode-org/icu/blob/main/icu4c/source/i18n/regexcmp.cpp) - Unicode org's package with full Unicode support.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mJava: java.util.regex[0m[38;5;12m (https://github.com/openjdk/jdk/tree/master/src/java.base/share/classes/java/util/regex) - JDK standard regexes.[39m
|
||
[38;5;12m- JavaScript:[39m
|
||
[38;5;12m - [39m[38;5;14m[1mJavaScriptCore: RegExp[0m[38;5;12m (https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/runtime/RegExp.cpp) - Regex engine used by Safari.[39m
|
||
[38;5;12m - [39m[38;5;14m[1mV8: Irregexp[0m[38;5;12m (https://github.com/v8/v8/tree/main/src/regexp) - Regex engine used by Chrome, Edge, [39m[38;5;14m[1mFirefox[0m[38;5;12m (https://hacks.mozilla.org/2020/06/a-new-regexp-engine-in-spidermonkey/), etc.[39m
|
||
[38;5;12m- [39m[38;5;14m[1m.NET: System.Text.RegularExpressions[0m[38;5;12m (https://github.com/dotnet/runtime/tree/main/src/libraries/System.Text.RegularExpressions) - Shared by all .NET languages (C#, VB, etc.).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mOnigmo[0m[38;5;12m (https://github.com/k-takata/Onigmo) - Forked from Oniguruma. Used by Ruby 2.0+.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mOniguruma[0m[38;5;12m (https://github.com/kkos/oniguruma) - Popular C regex library used by Ruby 1.9, TextMate grammars, etc.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPCRE2[0m[38;5;12m (https://github.com/PCRE2Project/pcre2) - Popular C regex library used by PHP, R, etc.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPerl[0m[38;5;12m (https://github.com/Perl/perl5/blob/blead/regexp.h) - See [39m[38;5;14m[1mperlreguts[0m[38;5;12m (https://perldoc.perl.org/perlreguts).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPython: re[0m[38;5;12m (https://github.com/python/cpython/tree/main/Lib/re) and [39m[38;5;14m[1mregex[0m[38;5;12m (https://github.com/mrabarnett/mrab-regex) - Standard and extended regex libraries.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRE2[0m[38;5;12m (https://github.com/google/re2) - Popular C++ regex library used by Go, etc. Non-backtracking engine.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRust: regex[0m[38;5;12m (https://github.com/rust-lang/regex) - Non-backtracking engine.[39m
|
||
|
||
[38;2;255;187;0m[4mFlavor differences[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mSyntax and behavior differences between regex flavors.[0m
|
||
|
||
[38;5;12m- Ron Buckton: [39m[38;5;14m[1mRegular Expression Feature Comparisons[0m[38;5;12m (https://rbuckton.github.io/regexp-features/) [39m[38;5;12m*[39m[38;5;12mGitHub[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://github.com/rbuckton/regexp-features)[0m[48;2;30;30;40m[38;5;13m[3m .[0m
|
||
[38;5;12m- Regular-Expressions.info: [39m[38;5;14m[1mTools & Languages[0m[38;5;12m (https://www.regular-expressions.info/tools.html).[39m
|
||
[38;5;12m- Steven Levithan: [39m[38;5;14m[1mNamed capture[0m[38;5;12m (https://xregexp.com/syntax/named_capture_comparison/), [39m[38;5;14m[1mLookbehind[0m[38;5;12m (https://stevenlevithan.com/regex/tests/lookbehind.html).[39m
|
||
[38;5;12m- Wikipedia: [39m[38;5;14m[1mComparison of regular expression engines[0m[38;5;12m (https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines).[39m
|
||
|
||
[38;2;255;187;0m[4mPerformance[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mPattern and engine performance, benchmarks, and [0m[48;2;30;30;40m[38;5;14m[1m[3mReDoS[0m[48;2;30;30;40m[38;5;13m[3m (https://en.wikipedia.org/wiki/ReDoS) prevention.[0m
|
||
|
||
[38;2;255;187;0m[4mCrafting efficient regexes[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRunaway Regular Expressions: Catastrophic Backtracking[0m[38;5;12m (https://www.regular-expressions.info/catastrophic.html) - Exploration and solutions for superlinear backtracking.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBook: High Performance JavaScript[0m[38;5;12m (https://www.amazon.com/dp/059680279X/?tag=slev-20) (2010) - [39m[48;2;30;30;40m[38;5;13m[3mChapter 5: Strings and Regular Expressions[0m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBook: Mastering Regular Expressions, 3rd Edition[0m[38;5;12m (https://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124/?tag=slev-20) (2006) - [39m[48;2;30;30;40m[38;5;13m[3mChapter 6: Crafting an Efficient Expression[0m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPerformance of Greedy vs. Lazy Regex Quantifiers[0m[38;5;12m (https://blog.stevenlevithan.com/archives/greedy-lazy-performance) - Illustrates the mechanics of backtracking.[39m
|
||
|
||
[38;5;12mℹ️ With backtracking engines, how you craft a regex can affect how fast it finds matches or reports failures.[39m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mPerformance of Regular Expressions[0m[38;5;12m (https://medium.com/textmaster-engineering/performance-of-regular-expressions-81371f569698) - On backtracking performance, with detailed examples.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mRegex engine optimization[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegular Expression Matching Can Be Simple And Fast[0m[38;5;12m (https://swtch.com/~rsc/regexp/regexp1.html) - On non-backtracking engines. A [39m[38;5;14m[1mfollow up[0m[38;5;12m (https://swtch.com/~rsc/regexp/regexp3.html) includes comparisons of RE2 and PCRE performance.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mRegular[0m[38;5;14m[1m [0m[38;5;14m[1mExpression[0m[38;5;14m[1m [0m[38;5;14m[1mImprovements[0m[38;5;14m[1m [0m[38;5;14m[1min[0m[38;5;14m[1m [0m[38;5;14m[1m.NET[0m[38;5;14m[1m [0m[38;5;14m[1m7[0m[38;5;12m [39m[38;5;12m(https://devblogs.microsoft.com/dotnet/regular-expression-improvements-in-dotnet-7/)[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;14m[1m.NET[0m[38;5;14m[1m [0m[38;5;14m[1m5[0m[38;5;12m [39m[38;5;12m(https://devblogs.microsoft.com/dotnet/regex-performance-improvements-in-net-5/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mIncludes[39m[38;5;12m [39m[38;5;12mdetailed[39m[38;5;12m [39m
|
||
[38;5;12mexplanations[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mperformance[39m[38;5;12m [39m[38;5;12moptimizations.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mripgrep is faster than {grep, …}[0m[38;5;12m (https://blog.burntsushi.net/ripgrep/) - Includes details about what makes ripgrep and Rust's [39m[48;5;235m[38;5;249mregex[49m[39m[38;5;12m fast.[39m
|
||
|
||
[38;2;255;187;0m[4mBenchmarking[0m
|
||
|
||
[38;5;12m- Cross-engine benchmarking libraries: [39m[38;5;14m[1mrebar[0m[38;5;12m (https://github.com/BurntSushi/rebar), [39m[38;5;14m[1mregex-benchmark[0m[38;5;12m (https://github.com/mariomka/regex-benchmark).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBoost.Regex: Performance[0m[38;5;12m (https://www.boost.org/doc/libs/release/libs/regex/doc/html/boost_regex/background/performance.html) - Compares Boost, C++ [39m[48;5;235m[38;5;249mstd::regex[49m[39m[38;5;12m, and others.[39m
|
||
|
||
[38;2;255;187;0m[4mReDoS checkers[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mregex.rip[0m[38;5;12m (https://regex.rip/) - Test a regex for ReDoS vulnerability.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mrecheck[0m[38;5;12m (https://github.com/makenowjust-labs/recheck) [39m[38;5;12m*[39m[38;5;12mhome[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://makenowjust-labs.github.io/recheck/)[0m[48;2;30;30;40m[38;5;13m[3m - JavaScript and Scala library for detecting ReDoS vulnerability. Can be used as an ESLint plugin.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mvuln-regex-detector[0m[38;5;12m (https://github.com/davisjam/vuln-regex-detector) - Perl library for detecting ReDoS vulnerability.[39m
|
||
|
||
[38;5;12m⚠️ These tools have limitations on supported syntax.[39m
|
||
|
||
[38;2;255;187;0m[4mCollections of patterns[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mPrewritten regexes for specific tasks.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mBook: Regular Expressions Cookbook, 2nd Edition[0m[38;5;12m (https://www.amazon.com/Regular-Expressions-Cookbook-Solutions-Programming/dp/1449319432/?tag=slev-20) (2012) - High-quality solutions with detailed explanations.[39m
|
||
[38;5;12m - Flavors: Java, JavaScript, .NET, PCRE, Perl, Python, Ruby, XRegExp.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegex DB[0m[38;5;12m (https://rgxdb.com/) - Solutions include basic descriptions and examples of matching and non-matching text.[39m
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12mMany[39m[38;5;12m [39m[38;5;12mregexes[39m[38;5;12m [39m[38;5;12mfound[39m[38;5;12m [39m[38;5;12monline[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mlow[39m[38;5;12m [39m[38;5;12mquality.[39m[38;5;12m [39m[38;5;12mIt's[39m[38;5;12m [39m[38;5;12mrisky[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12muse[39m[38;5;12m [39m[38;5;12mregexes[39m[38;5;12m [39m[38;5;12myou[39m[38;5;12m [39m[38;5;12mdon't[39m[38;5;12m [39m[38;5;12mfully[39m[38;5;12m [39m[38;5;12munderstand[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mcode,[39m[38;5;12m [39m[38;5;12msince[39m[38;5;12m [39m[38;5;12mthey[39m[38;5;12m [39m[38;5;12mmight[39m[38;5;12m [39m[38;5;12mhave[39m[38;5;12m [39m[38;5;12mfalse[39m[38;5;12m [39m[38;5;12mpositives/negatives,[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mvulnerable[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mperformance[39m[38;5;12m [39m[38;5;12mproblems[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mcertain[39m[38;5;12m [39m[38;5;12mtarget[39m[38;5;12m [39m[38;5;12mstrings,[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12massume[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mdifferent[39m[38;5;12m [39m
|
||
[38;5;12mregex[39m[38;5;12m [39m[38;5;12mflavor.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mJavaScript regex libraries[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mOpen source JavaScript libraries for advanced regex use and processing.[0m
|
||
|
||
[38;2;255;187;0m[4mAlternative regex builders and engines[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRegex+[0m[38;5;12m (https://github.com/slevithan/regex) - A template tag for extended, readable, high-performance JavaScript regexes.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mOniguruma-To-ES[0m[38;5;12m (https://github.com/slevithan/oniguruma-to-es) - Convert Oniguruma patterns to native JavaScript regexes.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mXRegExp[0m[38;5;12m (https://github.com/slevithan/xregexp) [39m[38;5;12m*[39m[38;5;12mhome[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://xregexp.com/)[0m[48;2;30;30;40m[38;5;13m[3m - Extended regex syntax, flags, and utils; useful for backcompat.[0m
|
||
[38;5;12m- [39m[38;5;14m[1mincr-regex-package[0m[38;5;12m (https://github.com/nurulc/incr-regex-package) - Partial/incremental matching, used by [39m[38;5;14m[1mreact-rxinput[0m[38;5;12m (https://github.com/nurulc/react-rxinput) for input validation with a regex mask.[39m
|
||
[38;5;12m- Use other engines via WASM bindings: [39m[38;5;14m[1mnode-re2[0m[38;5;12m (https://github.com/uhop/node-re2) (RE2), [39m[38;5;14m[1mrregex[0m[38;5;12m (https://github.com/2fd/rregex) (Rust's [39m[48;5;235m[38;5;249mregex[49m[39m[38;5;12m), [39m[38;5;14m[1mvscode-oniguruma[0m[38;5;12m (https://github.com/microsoft/vscode-oniguruma) (Oniguruma).[39m
|
||
|
||
[38;2;255;187;0m[4mAbstracted regex syntax[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mRexx[0m[38;5;12m (https://github.com/yyytcool/rexx) - A template tag that uses structured syntax with variables and comments.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMelody[0m[38;5;12m (https://github.com/yoav-lavi/melody) [39m[38;5;12m*[39m[38;5;12mdocs[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://yoav-lavi.github.io/melody/book/)[0m[48;2;30;30;40m[38;5;13m[3m - A language that compiles to regexes.[0m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mCompose[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mfunctions:[39m[38;5;12m [39m[38;5;14m[1mcompose-regexp.js[0m[38;5;12m [39m[38;5;12m(https://github.com/compose-regexp/compose-regexp.js),[39m[38;5;12m [39m[38;5;14m[1mVerbalExpressions[0m[38;5;12m [39m[38;5;12m(https://github.com/VerbalExpressions/JSVerbalExpressions)[39m[38;5;12m [39m[38;5;12m(implementations[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;14m[1mmany[0m[38;5;14m[1m [0m[38;5;14m[1mlanguages[0m[38;5;12m [39m
|
||
[38;5;12m(https://verbalexpressions.github.io/)),[39m[38;5;12m [39m[38;5;14m[1mmagic-regexp[0m[38;5;12m [39m[38;5;12m(https://github.com/unjs/magic-regexp)[39m[38;5;12m [39m[38;5;12m*[39m[38;5;12mhome[39m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m(https://regexp.dev/)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mSuper[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mExpressive[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m(https://github.com/francisrstokes/super-expressive)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m*[0m[48;2;30;30;40m[38;5;13m[3mplayground[0m[38;5;14m[1m [0m
|
||
[38;5;14m[1m(https://nartc.github.io/ng-super-expressive/)[0m[38;5;12m [39m[38;5;12m.[39m
|
||
|
||
[38;2;255;187;0m[4mRegex processors[0m
|
||
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mAST[39m[38;5;12m [39m[38;5;12mbuilders:[39m[38;5;12m [39m[38;5;14m[1mregexpp[0m[38;5;12m [39m[38;5;12m(https://github.com/eslint-community/regexpp)[39m[38;5;12m [39m[38;5;12m(used[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mESLint),[39m[38;5;12m [39m[38;5;14m[1mregexp-tree[0m[38;5;12m [39m[38;5;12m(https://github.com/DmitrySoshnikov/regexp-tree)[39m[38;5;12m [39m[38;5;12m(includes[39m[38;5;12m [39m[38;5;12moptimizer,[39m[38;5;12m [39m[38;5;12metc.),[39m[38;5;12m [39m[38;5;14m[1mregjsparser[0m[38;5;12m [39m[38;5;12m(https://github.com/jviereck/regjsparser)/[39m[38;5;14m[1mregjsgen[0m[38;5;12m [39m
|
||
[38;5;12m(https://github.com/bnjmnt4n/regjsgen).[39m
|
||
[38;5;12m - AST explorers: [39m[38;5;14m[1mAST Explorer: RegExp[0m[38;5;12m (https://astexplorer.net/#/gist/56d33dc28d07c7f57bdf5ca0f4061320/c6b67a829334151af01ba55960c653e4462df437), [39m[38;5;14m[1mJS RegExp AST Viewer[0m[38;5;12m (https://leaysgur.github.io/js-regexp-ast-viewer/).[39m
|
||
[38;5;12m - [39m[38;5;14m[1mregexp-ast-analysis[0m[38;5;12m (https://github.com/RunDevelopment/regexp-ast-analysis) [39m[38;5;12m*[39m[38;5;12mdocs[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://rundevelopment.github.io/regexp-ast-analysis/docs/latest/)[0m[48;2;30;30;40m[38;5;13m[3m - Analyze AST nodes produced by regexpp.[0m
|
||
[38;5;12m- Highlight regex syntax: [39m[38;5;14m[1mRegex Colorizer[0m[38;5;12m (https://github.com/slevithan/regex-colorizer) [39m[38;5;12m*[39m[38;5;12mhome[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://slevithan.github.io/regex-colorizer/demo/)[0m[48;2;30;30;40m[38;5;13m[3m , [0m[48;2;30;30;40m[38;5;14m[1m[3mCodeMirror PCRE mode[0m[48;2;30;30;40m[38;5;13m[3m (https://github.com/xavierog/codemirror-mode-pcre).[0m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mFind[39m[38;5;12m [39m[38;5;12mregex[39m[38;5;12m [39m[38;5;12mmistakes[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mimprovements:[39m[38;5;12m [39m[38;5;14m[1meslint-plugin-regexp[0m[38;5;12m [39m[38;5;12m(https://github.com/ota-meshi/eslint-plugin-regexp)[39m[38;5;12m [39m[38;5;12m*[39m[38;5;12mhome[39m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m(https://ota-meshi.github.io/eslint-plugin-regexp/)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3meslint-plugin-optimize-regex[0m[48;2;30;30;40m[38;5;13m[3m [0m
|
||
[48;2;30;30;40m[38;5;13m[3m(https://github.com/BrainMaestro/eslint-plugin-optimize-regex).[0m
|
||
[38;5;12m- Generate strings that match a given regex: [39m[38;5;14m[1mrandexp.js[0m[38;5;12m (https://github.com/fent/randexp.js), [39m[38;5;14m[1mregex-to-strings[0m[38;5;12m (https://github.com/wimpyprogrammer/regex-to-strings).[39m
|
||
[38;5;12m- Generate a regex from given strings: [39m[38;5;14m[1mregexgen[0m[38;5;12m (https://github.com/devongovett/regexgen).[39m
|
||
|
||
[38;2;255;187;0m[4mJavaScript regex evolution[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mThe history of improvements to regular expressions in the JavaScript [0m[48;2;30;30;40m[38;5;14m[1m[3mstandard[0m[48;2;30;30;40m[38;5;13m[3m (https://tc39.es/ecma262/multipage/). Starting with ES2018, includes links to the TC39 proposals where features were developed and discussed.[0m
|
||
|
||
[38;5;12m- ES3 (1999) introduced regular expressions.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mES5[39m[38;5;12m [39m[38;5;12m(2009)[39m[38;5;12m [39m[38;5;12mfixed[39m[38;5;12m [39m[38;5;12munintuitive[39m[38;5;12m [39m[38;5;12mbehavior[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mcreating[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mnew[39m[38;5;12m [39m[38;5;12mobject[39m[38;5;12m [39m[38;5;12mevery[39m[38;5;12m [39m[38;5;12mtime[39m[38;5;12m [39m[38;5;12mregex[39m[38;5;12m [39m[38;5;12mliterals[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mevaluated[39m[38;5;12m [39m[38;5;12m*[39m[38;5;12mexplainer[39m[48;2;30;30;40m[38;5;14m[1m[3m [0m
|
||
[48;2;30;30;40m[38;5;14m[1m[3m(https://whereswalden.com/2010/01/15/more-es5-incompatible-changes-regular-expressions-now-evaluate-to-a-new-object-not-the-same-object-each-time-theyre-encountered/)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mallowed[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mregex[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mliterals[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mto[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3muse[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3munescaped[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mforward[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mslashes[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mwithin[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mcharacter[0m[48;2;30;30;40m[38;5;13m[3m [0m
|
||
[48;2;30;30;40m[38;5;13m[3mclasses[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m([0m[48;5;235m[38;5;249m[3m/**/** /[0m[48;2;30;30;40m[38;5;13m[3m).[0m
|
||
[38;5;12m- ES6/ES2015 added: [39m[38;5;12m*[39m[38;5;12mexplainer[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://2ality.com/2015/07/regexp-es6.html)[0m[48;2;30;30;40m[38;5;13m[3m [0m
|
||
[38;5;12m - Flag [39m[48;5;235m[38;5;249my[49m[39m[38;5;12m ([39m[48;5;235m[38;5;249msticky[49m[39m[38;5;12m), which anchors matches to [39m[48;5;235m[38;5;249mlastIndex[49m[39m[38;5;12m.[39m
|
||
[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mFlag[39m[38;5;12m [39m[48;5;235m[38;5;249mu[49m[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249municode[49m[39m[38;5;12m)[39m[38;5;12m [39m[38;5;12m*[39m[38;5;12mexplainer[39m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m(https://mathiasbynens.be/notes/es6-unicode-regex)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m*[0m[48;2;30;30;40m[38;5;13m[3m2016[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mspec[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mfix[0m[38;5;14m[1m [0m[38;5;14m[1m(https://github.com/tc39/ecma262/pull/525)[0m[38;5;12m [39m[38;5;12m,[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12madds[39m[38;5;12m [39m[38;5;12mUnicode[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12mpoint[39m[38;5;12m [39m[38;5;12mescapes[39m[38;5;12m [39m[38;5;12mvia[39m[38;5;12m [39m[48;5;235m[38;5;249m\u{…}[49m[39m[38;5;12m,[39m[38;5;12m [39m[38;5;12mstrict[39m[38;5;12m [39m[38;5;12merrors[39m[38;5;12m [39m[38;5;12m(for[39m[38;5;12m [39m[38;5;12munreserved[39m[38;5;12m [39m[38;5;12mescapes,[39m[38;5;12m [39m[38;5;12moctal[39m[38;5;12m [39m[38;5;12mescapes,[39m
|
||
[38;5;12mquantified[39m[38;5;12m [39m[38;5;12mlookahead,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12munescaped[39m[38;5;12m [39m[38;5;12mspecial[39m[38;5;12m [39m[38;5;12mcharacters[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12msome[39m[38;5;12m [39m[38;5;12mcontexts),[39m[38;5;12m [39m[38;5;12mUnicode[39m[38;5;12m [39m[38;5;12mcase-folding[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mflag[39m[38;5;12m [39m[48;5;235m[38;5;249mi[49m[39m[38;5;12m,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12mpoint[39m[38;5;12m [39m[38;5;12mmatching[39m[38;5;12m [39m[38;5;12m(with[39m[38;5;12m [39m[38;5;12mimpact[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mquantifiers,[39m[38;5;12m [39m[38;5;12mcharacter[39m[38;5;12m [39m[38;5;12mclasses,[39m[38;5;12m [39m[38;5;12mranges,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mbuilt-in[39m[38;5;12m [39m[38;5;12msets).[39m
|
||
[38;5;12m - Getter [39m[48;5;235m[38;5;249mRegExp.prototype.flags[49m[39m[38;5;12m, the ability to copy a regex using [39m[48;5;235m[38;5;249mRegExp[49m[39m[38;5;12m (optionally with new flags), and support for subclassing [39m[48;5;235m[38;5;249mRegExp[49m[39m[38;5;12m (along with [39m[48;5;235m[38;5;249mRegExp.prototype**Symbol.match[49m[39m[38;5;12m/[39m[48;5;235m[38;5;249mreplace[49m[39m[38;5;12m/[39m[48;5;235m[38;5;249msearch[49m[39m[38;5;12m/[39m[48;5;235m[38;5;249msplit** [49m[39m[38;5;12m and [39m[48;5;235m[38;5;249mRegExp**Symbol.species** [49m[39m[38;5;12m).[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mES2018[39m[38;5;12m [39m[38;5;12madded[39m[38;5;12m [39m[38;5;14m[1mflag[0m[38;5;14m[1m [0m[48;5;235m[38;5;249m[1ms[0m[38;5;12m [39m[38;5;12m(https://github.com/tc39/proposal-regexp-dotall-flag)[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249mdotAll[49m[39m[38;5;12m),[39m[38;5;12m [39m[38;5;14m[1mlookbehind[0m[38;5;12m [39m[38;5;12m(https://github.com/tc39/proposal-regexp-lookbehind),[39m[38;5;12m [39m[38;5;14m[1mnamed[0m[38;5;14m[1m [0m[38;5;14m[1mcapture[0m[38;5;12m [39m[38;5;12m(https://github.com/tc39/proposal-regexp-named-groups),[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;14m[1mUnicode[0m[38;5;14m[1m [0m[38;5;14m[1mproperties[0m[38;5;12m [39m
|
||
[38;5;12m(https://github.com/tc39/proposal-regexp-unicode-property-escapes)[39m[38;5;12m [39m[38;5;12m(via[39m[38;5;12m [39m[48;5;235m[38;5;249m\p{…}[49m[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[48;5;235m[38;5;249m\P{…}[49m[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mrequire[39m[38;5;12m [39m[38;5;12mflag[39m[38;5;12m [39m[48;5;235m[38;5;249mu[49m[39m[38;5;12m;[39m[38;5;12m [39m[38;5;12msee[39m[38;5;12m [39m[38;5;14m[1mlist[0m[38;5;12m [39m[38;5;12m(https://github.com/mathiasbynens/regexpu-core/blob/main/property-escapes.md)).[39m
|
||
[38;5;12m- ES2020 added string method [39m[48;5;235m[38;5;249m[1mmatchAll[0m[38;5;12m (https://github.com/tc39/proposal-string-matchall) (which returns an iterator), plus [39m[48;5;235m[38;5;249mRegExp.prototype**Symbol.matchAll** [49m[39m[38;5;12m.[39m
|
||
[38;5;12m- ES2022 added [39m[38;5;14m[1mflag [0m[48;5;235m[38;5;249m[1md[0m[38;5;12m (https://github.com/tc39/proposal-regexp-match-indices) ([39m[48;5;235m[38;5;249mhasIndices[49m[39m[38;5;12m), which provides start/end indices for matched substrings.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mES2024[39m[38;5;12m [39m[38;5;12madded[39m[38;5;12m [39m[38;5;14m[1mflag[0m[38;5;14m[1m [0m[48;5;235m[38;5;249m[1mv[0m[38;5;12m [39m[38;5;12m(https://github.com/tc39/proposal-regexp-v-flag)[39m[38;5;12m [39m[38;5;12m([39m[48;5;235m[38;5;249municodeSets[49m[39m[38;5;12m)[39m[38;5;12m [39m[38;5;12m*[39m[38;5;12mexplainer[39m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m(https://v8.dev/features/regexp-v-flag)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mas[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3man[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mupgrade[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mto[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mflag[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3mu[0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mwhich[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3madds[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3ma[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mset[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mof[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mmulticharacter[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m"properties[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mof[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mstrings"[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mto[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m\p{…}[0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mmulticharacter[0m[48;2;30;30;40m[38;5;13m[3m [0m
|
||
[48;2;30;30;40m[38;5;13m[3melements[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mwithin[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mcharacter[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mclasses[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mvia[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m\p{…}[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m\q{…|…}[0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mnested[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mcharacter[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mclasses,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mset[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3moperators[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m**…--…** [0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m**…&&…** [0m[48;2;30;30;40m[38;5;13m[3m,[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mdifferent[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mescaping[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mrules[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mwithin[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mcharacter[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mclasses.[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mIt[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3malso[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mfixes[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mcase-insensitive[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mmatching[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mfor[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m\p[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mand[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;5;235m[38;5;249m[3m\P[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mwithin[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3mnegated[0m[48;2;30;30;40m[38;5;13m[3m [0m
|
||
[48;5;235m[38;5;249m[3m**^…** [0m[48;2;30;30;40m[38;5;13m[3m.[0m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mEach[39m[38;5;12m [39m[38;5;12medition[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mES2019[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mES2023[39m[38;5;12m [39m[38;5;12madded[39m[38;5;12m [39m[38;5;12madditional[39m[38;5;12m [39m[38;5;12mUnicode[39m[38;5;12m [39m[38;5;12mproperties[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mvia[39m[38;5;12m [39m[48;5;235m[38;5;249m\p{…}[49m[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[48;5;235m[38;5;249m\P{…}[49m[39m[38;5;12m [39m[38;5;12m(see[39m[38;5;12m [39m[38;5;14m[1mlists[0m[38;5;12m [39m[38;5;12m(https://github.com/eslint-community/regexpp/blob/main/src/unicode/properties.ts)).[39m[38;5;12m [39m[38;5;12mES2021[39m[38;5;12m [39m[38;5;12madded[39m[38;5;12m [39m[38;5;12mstring[39m[38;5;12m [39m[38;5;12mmethod[39m[38;5;12m [39m[48;5;235m[38;5;249m[1mreplaceAll[0m[38;5;12m [39m
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12m(https://github.com/tc39/proposal-string-replaceall),[39m[38;5;12m [39m[38;5;12malthough,[39m[38;5;12m [39m[38;5;12mwhen[39m[38;5;12m [39m[38;5;12mgiven[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mregex,[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12monly[39m[38;5;12m [39m[38;5;12mdifference[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mES3's[39m[38;5;12m [39m[48;5;235m[38;5;249mreplace[49m[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mthrows[39m[38;5;12m [39m[38;5;12mif[39m[38;5;12m [39m[38;5;12mnot[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12mflag[39m[38;5;12m [39m[48;5;235m[38;5;249mg[49m[39m[38;5;12m.[39m
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mRegexes Got Good: The History And Future Of Regular Expressions In JavaScript[0m[38;5;12m (https://www.smashingmagazine.com/2024/08/history-future-regular-expressions-javascript/)[39m
|
||
[38;5;12m- Backcompat libraries: [39m[38;5;14m[1mregexpu[0m[38;5;12m (https://github.com/mathiasbynens/regexpu), [39m[38;5;14m[1mregenerate[0m[38;5;12m (https://github.com/mathiasbynens/regenerate) ([39m[38;5;14m[1mUnicode property sets[0m[38;5;12m (https://github.com/mathiasbynens/regenerate-unicode-properties)).[39m
|
||
[38;5;12m- Chrome's [39m[48;5;235m[38;5;249ml[49m[39m[38;5;12m ([39m[48;5;235m[38;5;249mlinear[49m[39m[38;5;12m) regex flag, behind a V8 flag [39m[38;5;12m*[39m[38;5;12mexplainer[39m[48;2;30;30;40m[38;5;14m[1m[3m (https://v8.dev/blog/non-backtracking-regexp)[0m[48;2;30;30;40m[38;5;13m[3m [0m[48;2;30;30;40m[38;5;13m[3m*[0m[48;2;30;30;40m[38;5;13m[3mhow to run[0m[38;5;14m[1m (https://www.chromium.org/developers/how-tos/run-chromium-with-flags/)[0m[38;5;12m .[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCan I use[0m[38;5;12m (https://caniuse.com/) - Up-to-date browser support tables for individual features.[39m
|
||
|
||
|
||
|
||
[38;5;12m [39m
|
||
[38;5;12m [39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mDuplicate named capturing groups[0m[38;5;12m (https://github.com/tc39/proposal-duplicate-named-capturing-groups) (2022) - Ex: [39m[48;5;235m[38;5;249m(?…)[49m[39m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mExtended mode and comments[0m[38;5;12m (https://github.com/tc39/proposal-regexp-x-mode) (2021) - Flag [39m[48;5;235m[38;5;249mx[49m[39m[38;5;12m ([39m[48;5;235m[38;5;249mextended[49m[39m[38;5;12m) with insignificant whitespace and line comments ([39m[48;5;235m[38;5;249m#…[49m[39m[38;5;12m), plus inline comments via [39m[48;5;235m[38;5;249m(?#…)[49m[39m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPattern modifiers[0m[38;5;12m (https://github.com/tc39/proposal-regexp-modifiers) (2021) - Ex: [39m[48;5;235m[38;5;249m(?ims:…)[49m[39m[38;5;12m, [39m[48;5;235m[38;5;249m(?-ims:…)[49m[39m[38;5;12m, [39m[48;5;235m[38;5;249m(?i-ms:…)[49m[39m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mAtomic operators[0m[38;5;12m (https://github.com/tc39/proposal-regexp-atomic-operators) (2021) - Atomic groups via [39m[48;5;235m[38;5;249m(?>…)[49m[39m[38;5;12m and possessive quantifiers (ex: [39m[48;5;235m[38;5;249m*+[49m[39m[38;5;12m, [39m[48;5;235m[38;5;249m++[49m[39m[38;5;12m).[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBuffer boundaries[0m[38;5;12m (https://github.com/tc39/proposal-regexp-buffer-boundaries) (2021) - Anchors [39m[48;5;235m[38;5;249m\A[49m[39m[38;5;12m and [39m[48;5;235m[38;5;249m\z[49m[39m[38;5;12m, not affected by flag [39m[48;5;235m[38;5;249mm[49m[39m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1m\R escape[0m[38;5;12m (https://github.com/tc39/proposal-regexp-r-escape) (2021) - Outside character classes, [39m[48;5;235m[38;5;249m\R[49m[39m[38;5;12m matches any line terminator.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRestrict subclassing support in built-ins[0m[38;5;12m (https://github.com/tc39/proposal-rm-builtin-subclassing) (2020) - Scaled back [39m[48;5;235m[38;5;249mRegExp[49m[39m[38;5;12m subclassing.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRegExp escaping[0m[38;5;12m (https://github.com/tc39/proposal-regex-escaping) (2015) - [39m[48;5;235m[38;5;249mRegExp.escape[49m[39m[38;5;12m.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLegacy RegExp features[0m[38;5;12m (https://github.com/tc39/proposal-regexp-legacy-features) (2015) - Standardization of legacy features.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mBooks[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mA curated list of regex books.[0m
|
||
|
||
[38;5;12m-[39m[38;5;12m [39m[48;2;30;30;40m[38;5;14m[1m[3mRegular[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mExpressions[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mCookbook,[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m2nd[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mEdition[0m[38;5;12m [39m[38;5;12m(https://www.amazon.com/dp/1449319432/?tag=slev-20)[39m[38;5;12m [39m[38;5;12m(2012)[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mJan[39m[38;5;12m [39m[38;5;12mGoyvaerts[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mSteven[39m[38;5;12m [39m[38;5;12mLevithan[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mRegex[39m[38;5;12m [39m[38;5;12mtutorial[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12msamples[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12meight[39m[38;5;12m [39m[38;5;12mprogramming[39m[38;5;12m [39m[38;5;12mlanguages,[39m[38;5;12m [39m[38;5;12m100+[39m[38;5;12m [39m[38;5;12mregex[39m[38;5;12m [39m[38;5;12mrecipes[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mpractical[39m[38;5;12m [39m
|
||
[38;5;12mproblems,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mdeep[39m[38;5;12m [39m[38;5;12mfocus[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mcross-flavor[39m[38;5;12m [39m[38;5;12mdifferences.[39m
|
||
[38;5;12m - Flavors: Java, JavaScript, .NET, PCRE, Perl, Python, Ruby, XRegExp.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[48;2;30;30;40m[38;5;14m[1m[3mMastering[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mRegular[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mExpressions,[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3m3rd[0m[48;2;30;30;40m[38;5;14m[1m[3m [0m[48;2;30;30;40m[38;5;14m[1m[3mEdition[0m[38;5;12m [39m[38;5;12m(https://www.amazon.com/dp/0596528124/?tag=slev-20)[39m[38;5;12m [39m[38;5;12m(2006)[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mJeffrey[39m[38;5;12m [39m[38;5;12mFriedl[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mcomputer[39m[38;5;12m [39m[38;5;12mscience[39m[38;5;12m [39m[38;5;12mclassic,[39m[38;5;12m [39m[38;5;12mbest[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mpeople[39m[38;5;12m [39m[38;5;12mwho[39m[38;5;12m [39m[38;5;12malready[39m[38;5;12m [39m[38;5;12mknow[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mbasics.[39m[38;5;12m [39m[38;5;12mIncludes[39m[38;5;12m [39m[38;5;12mgood[39m[38;5;12m [39m[38;5;12mcoverage[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mcrafting[39m[38;5;12m [39m[38;5;12mefficient[39m[38;5;12m [39m
|
||
[38;5;12mregexes.[39m
|
||
[38;5;12m - Flavors: Dedicated chapters on Java, .NET, Perl, and PHP (PCRE), with more limited coverage of Python, Tcl, command line tools, etc.[39m
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mIntroducing Regular Expressions[0m[38;5;12m (https://www.amazon.com/dp/1449392687/?tag=slev-20) (2012) by Michael Fitzgerald - An intro for programmers new to regular expressions that sticks to the basics.[39m
|
||
|
||
[38;2;255;187;0m[4mArticles[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mA curated list of regex articles.[0m
|
||
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mThe World's Shortest Regex Compiler?[0m[38;5;12m (https://jasonhpriestley.com/regex) and a [39m[38;5;14m[1mfollow up[0m[38;5;12m (https://jasonhpriestley.com/regex-dfa) on optimization - Introduction to writing a non-backtracking regex engine (in JavaScript).[39m
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mRegex Legends: The People Behind the Magic[0m[38;5;12m (https://blog.stevenlevithan.com/archives/regex-legends) - Influential people behind the technology.[39m
|
||
[38;5;12m- [39m[48;2;30;30;40m[38;5;14m[1m[3mFun With .NET Regex Balancing Groups[0m[38;5;12m (https://blog.stevenlevithan.com/archives/balancing-groups) - Advanced usage of a .NET-only regex feature.[39m
|
||
|
||
[38;2;255;187;0m[4mCommunities[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mDiscuss, assist, and get help with regular expressions.[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mReddit: r/regex[0m[38;5;12m (https://www.reddit.com/r/regex/)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mStack Overflow: [regex][0m[38;5;12m (https://stackoverflow.com/questions/tagged/regex?tab=Votes)[39m
|
||
|
||
[38;2;255;187;0m[4mMiscellaneous[0m
|
||
|
||
[48;2;30;30;40m[38;5;13m[3mOther interesting, fun, and useful stuff.[0m
|
||
|
||
[38;5;12m- Quiz: [39m[38;5;14m[1mregex101 Regex Quiz[0m[38;5;12m (https://regex101.com/quiz) - Requires sign-in.[39m
|
||
[38;5;12m- Games: [39m[38;5;14m[1mRegex Crossword[0m[38;5;12m (https://regexcrossword.com/), [39m[38;5;14m[1mregexle[0m[38;5;12m (https://regexle.com/), [39m[38;5;14m[1mThe Typing of the RegEX[0m[38;5;12m (https://thetypingoftheregex.com/), [39m[38;5;14m[1mRegex Machina[0m[38;5;12m (https://codepip.com/games/regex-machina/) ($).[39m
|
||
[38;5;12m- Comics: [39m[38;5;14m[1mxkcd[0m[38;5;12m (https://xkcd.com/208/), [39m[38;5;14m[1mGarabato Kid[0m[38;5;12m (https://twitter.com/garabatokid/status/1147063121678389253).[39m
|
||
|
||
[38;2;255;187;0m[4mAbout[0m
|
||
|
||
[38;5;12mAwesome Regex was created by [39m[38;5;14m[1mSteven Levithan[0m[38;5;12m (https://github.com/slevithan) and [39m[38;5;14m[1mcontributors[0m[38;5;12m (https://github.com/slevithan/awesome-regex/graphs/contributors).[39m
|
||
|
||
[38;2;255;187;0m[4mSponsors and backers[0m
|
||
|
||
[38;5;12m (https://github.com/brc-dd)[39m
|
||
[38;5;12m (https://github.com/roboflow)[39m
|
||
|
||
[38;2;255;187;0m[4mPast sponsors[0m
|
||
|
||
[38;5;12m (https://github.com/antfu)[39m
|
||
|
||
[38;5;12mIf you want to support this project, I'd love your help by contributing improvements, sharing it with others, or [39m[38;5;14m[1msponsoring[0m[38;5;12m (https://github.com/sponsors/slevithan) ongoing development.[39m
|
||
|
||
[38;5;12m© 2024–present. CC BY 4.0.[39m
|
||
|
||
[38;5;12mregex Github: https://github.com/slevithan/awesome-regex[39m
|