From 719ab8a02ead01fec9b03d7be57abd75d5941184 Mon Sep 17 00:00:00 2001 From: NoahLacks63 Date: Sat, 12 Jul 2025 14:44:38 -0400 Subject: [PATCH] Adding regex tool --- .gitignore | 1 + tools/ProfanityFilter/.vscode/launch.json | 26 + tools/ProfanityFilter/.vscode/settings.json | 7 + tools/ProfanityFilter/README.md | 18 + .../bin/ExceptionGenerator.class | Bin 0 -> 1821 bytes .../ProfanityFilter/bin/RegexGenerator.class | Bin 0 -> 3440 bytes tools/ProfanityFilter/bin/Words.json | 1689 +++++++++++++++++ .../src/ExceptionGenerator.java | 24 + tools/ProfanityFilter/src/RegexGenerator.java | 75 + 9 files changed, 1840 insertions(+) create mode 100644 tools/ProfanityFilter/.vscode/launch.json create mode 100644 tools/ProfanityFilter/.vscode/settings.json create mode 100644 tools/ProfanityFilter/README.md create mode 100644 tools/ProfanityFilter/bin/ExceptionGenerator.class create mode 100644 tools/ProfanityFilter/bin/RegexGenerator.class create mode 100644 tools/ProfanityFilter/bin/Words.json create mode 100644 tools/ProfanityFilter/src/ExceptionGenerator.java create mode 100644 tools/ProfanityFilter/src/RegexGenerator.java diff --git a/.gitignore b/.gitignore index 37d7e73..c0edcf7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules .env +tools/ProfanityFilter/src/Words.json \ No newline at end of file diff --git a/tools/ProfanityFilter/.vscode/launch.json b/tools/ProfanityFilter/.vscode/launch.json new file mode 100644 index 0000000..dfc4674 --- /dev/null +++ b/tools/ProfanityFilter/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "type": "java", + "name": "Current File", + "request": "launch", + "mainClass": "${file}" + }, + { + "type": "java", + "name": "RegexGenerator", + "request": "launch", + "mainClass": "RegexGenerator", + "projectName": "ProfanityFilter_ceb3bd68", + "args": [ + "ass", + "shit" + ] + } + ] +} \ No newline at end of file diff --git a/tools/ProfanityFilter/.vscode/settings.json b/tools/ProfanityFilter/.vscode/settings.json new file mode 100644 index 0000000..e112a70 --- /dev/null +++ b/tools/ProfanityFilter/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.sourcePaths": ["src"], + "java.project.outputPath": "bin", + "java.project.referencedLibraries": [ + "lib/**/*.jar" + ] +} diff --git a/tools/ProfanityFilter/README.md b/tools/ProfanityFilter/README.md new file mode 100644 index 0000000..7c03a53 --- /dev/null +++ b/tools/ProfanityFilter/README.md @@ -0,0 +1,18 @@ +## Getting Started + +Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code. + +## Folder Structure + +The workspace contains two folders by default, where: + +- `src`: the folder to maintain sources +- `lib`: the folder to maintain dependencies + +Meanwhile, the compiled output files will be generated in the `bin` folder by default. + +> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there. + +## Dependency Management + +The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies). diff --git a/tools/ProfanityFilter/bin/ExceptionGenerator.class b/tools/ProfanityFilter/bin/ExceptionGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..5774c68d4081bed91af97ae9d4130bb8d905f863 GIT binary patch literal 1821 zcma)6+j1L45Iv*YO3L~Y*|Jf9fQaHqb`pUB6D)&ClsI;f?GPC`7j7eYB5%Cf6}zio z7kSJ_P`u?SuYm_a`N1E+NAM|_vyySFl8SQG?o3b5^y%(1-SgK!`v(9%gVYcZNZi`3 zsitSx)@@}eM|!rSAtW&RL_U>yQ(E=>di9B_c><9I!!o?j1%laJMIcnPw^STK#B_ua z5f~{MmRf5ys><1rRZ|hXWY?rwk&fZ7kCY*A+i(TOOZ}b;L~TgJ5}3$7D!q=N>^X*2 zFXSq5oW+=iL{EI(T^-{{3Y_umlKqo%iqd5OU4R4#0>q*OV{hTs7 zE@Da`>^4n^xqH(xWN>sV6$44q*@a|SfjO#f9LuF6ac2;Gx(pzg@2SNs;gyw(Su^HdmFmZEvxn?qNeiSs?SehYahfy`%Eow7O-uBx`K< zJ)ifl1%5fn`_btx;Ig!~Oyy=uw!PD87Wy+iq3JQ)*lVf*$4~P3Ut#t`6s2jF4NnzD zBKRtb`y?tOGEqDvnIb3nL0_@>W))58y2{n?t-!^;ga@Ud;d_De|9_O7)Xf)Z7H5!+ z3 literal 0 HcmV?d00001 diff --git a/tools/ProfanityFilter/bin/RegexGenerator.class b/tools/ProfanityFilter/bin/RegexGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..6d70d74c5c26d2ba7b01748b68c7027c3baea188 GIT binary patch literal 3440 zcmaKuO>|pV5y$^mAAYi`#Eu*}aT>Qy>!h+x<0N*R#CF^yD*0%gq>V$;R8rwtezu-1 z=_yZ7ik%1wB@_y@6ev)j6jBP|qd=NMK3vFQ$>Ff(9N4g7!HNY7mYDxM>)8_VVIgUL zbLY;zGk50d{_#JH_W&Hk?=<)n)}JwEjQL|m!LW75vNZ%0T4(i&-k;M8GySJ0XN`=b z5S}tKj%gKidqJUP+%+gWX0HFFUK~+qo-k($x>L3dh5e1Aqs!=eOJsFh&p3uXQm347 zY_l*kGDbI{(M--Pn9i7jKi+drA&{`93=QiPHmojrTrXw0Y#0%=M9_+`Ler=_EsQ8O zYG_kvTMc1l(FkH_SI{bYu56s1R@fX*^we!+#c(8q%?iP!eyBJ70JdPOh6feat?q!U zN6?9fxXogj+1VejbF-YX`Uq>9`n77R5V{m1@#N&d{&Y2!st)vo@Q5s(iO;1&=;i{+ zDGED8XAJaGj5AH~@?4mn`CQ3J=7S1H`Ot$oTUt&v zJEz;O$C}cg7tigDLkmU29S*~f79O{gHB0R3@y1qXzXkHTS>W_|vaWt>{n&FZ1opZX zPo*ZSFEHvW_@stv!|kwa8o{UVB6H|ic4NH0+-p9?$!8*X37>V%rQr_S zw$5b&@t$NtdhK%&yo}GY9%c+S){ZqAtKM&|jiS8JUWwp~_>#h=ygp|ntU^Y2&YMn_ zQpwQ^4inJOrL`Tc5%>M7D9`0pasS%??8r;i{ZpFpI=-gitBvVeC^<$xg0JHZ258C6 z5nG;WTK&)P7If&)(DNf zN{-F8nP5w1jH9L$a9d;j?Ue3eevVj{Lu0*o(r~iYR4I&K;)aG_DRi%1;%1>@%^Cg6 z!7ZQeQT~%y_JW+t`wDN?=b&c2?C`i=n93QY?s3bSD;MkU6T_l9tb*P?R!tGkDP11Adn6Hesx zQpqT3xT~=JzWCRQNW+H;5B+~rUe(LtV;gJP&vxP2$VJ0njpXC48{nszTDB$?|D+W! zV_*A+h+Mdh^-uS<>UXdqy6G-D{5ap+Iw|z9M;W1Q9!&{7>X9L|-J@xt$2^)5>hUNm z)aQ{Y^teZ}Lj4}i3GMbMCp6$uUTCjJ1)+T&SwaUqDhiEwbW!M_N4C%t9+iX+d*lcu zJSq!))T4^fF^?_@o$zR0=xL7@gid;NS?IJ!T|&=#v|DJxqdh_&^JqZmyhnpV7d+Z4 zl=NswDDBZcp^tmCUr6`pfKbMxT|!2U?qKEv z(HzqThnhNqH<6DuG1Yf*)ra5X$|Al13Manp2Lyo{CKaIliQ|kyz_q2n^)2Ej zWXraXlU;CAjpHJof|+F#1C{;l|s=5#R`Z%GhMi6K<4>w(V||J~zsC_?B3n rO$? dictionary; + + static { + Map map = new HashMap<>(); + map.put('a', "[a@*]"); + map.put('b', "([b38]|\\\\|3)"); + map.put('c', "[c(k]"); + map.put('d', "[d]"); + map.put('e', "[e3*]"); + map.put('f', "([f]|ph)"); + map.put('g', "[g]"); + map.put('h', "[h]"); + map.put('i', "[il1!*]"); + map.put('j', "[j]"); + map.put('k', "[kc]"); + map.put('l', "[li]"); + map.put('m', "([m]|rn)"); + map.put('n', "[n]"); + map.put('o', "[o0pq*]"); + map.put('p', "[p]"); + map.put('q', "[q]"); + map.put('r', "[r]"); + map.put('s', "[sz5$]"); + map.put('t', "[t7+]"); + map.put('u', "[uv*]"); + map.put('v', "[v]"); + map.put('w', "([w]|vv)"); + map.put('x', "[x]"); + map.put('y', "[y]"); + map.put('z', "[z]"); + map.put(' ', ""); + map.put('1', "([1]|one)"); + map.put('2', "([2]|two)"); + map.put('3', "([3]|three)"); + map.put('4', "([4]|four)"); + map.put('5', "([5]|five)"); + map.put('6', "([6]|six)"); + map.put('7', "([7]|seven)"); + map.put('8', "([8]|eight)"); + map.put('9', "([9]|nine)"); + map.put('0', "([0]|zero)"); + dictionary = Collections.unmodifiableMap(map); + } + + public static void main(String[] args) { + for (String s : args) { + String regex = "(\\\\b|^)"; + + for (char c : s.toLowerCase().toCharArray()) { + regex += dictionary.get(c) + "+[\\\\s\\\\n\\\\W]*"; + } + + regex += "(\\\\b|$)"; + + System.out.println(regex); + } + } + + public static String regexGenerator(String str) { + String regex = "(\\\\b|^)"; + + for (char c : str.toLowerCase().toCharArray()) { + regex += dictionary.get(c) + "+[\\\\s\\\\n\\\\W]*"; + } + + regex += "(\\\\b|$)"; + + return regex; + } +} \ No newline at end of file