├── .gitignore ├── README.md └── annotations.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | `\W` => nao palavras 2 | `\w` => paralavras 3 | 4 | `^(\d{3}).(\d{3}).(\d{3})-(\d{2})` -> pega os numeros (padrao mais iniciante) 5 | 6 | 123.123.123-14 7 | 8 | 321.321.321-32 9 | 10 | 200.300.500-19 11 | 12 | 13 | procurar por: `[.-]` 14 | 15 | replace por: vazio 16 | 17 | --- 18 | 19 | Wendel, Erick 20 | 21 | Gomes, Laila 22 | 23 | Johnson, Jose 24 | 25 | 26 | procurar por: `^(\w+),\s(\w+)` 27 | 28 | replace por: `$2 $1` 29 | 30 | resultado: Erick Wendel 31 | 32 | 33 | --- 34 | 35 | Wendel, Erick 36 | 37 | Gomes, Laila 38 | 39 | Johnson, Jose 40 | 41 | 42 | 43 | 44 | procurar por: `^(\w+),\s(\w+)` 45 | 46 | replace por: `{"firstName": "$2", "lastName": "$1"},` 47 | 48 | resultado: 49 | 50 | 51 | {"firstName": "Erick", "lastName": "Wendel"}, 52 | 53 | {"firstName": "Laila", "lastName": "Gomes"}, 54 | 55 | {"firstName": "Jose", "lastName": "Johnson"}, 56 | 57 | 58 | --- 59 | 60 | SQL to MongoDB example 61 | 62 | `SELECT id, nome, endereco FROM users WHERE id = 1` 63 | 64 | `SELECT id, descricao, codigo FROM users WHERE descricao = 'SP'` 65 | 66 | 67 | desejado: `db.users.find({id: 1 }).project({ id: true, nome: true, endereco: true })` 68 | 69 | 70 | procurar por: `select\s(.*?)\sfrom\s(.*?)\swhere\s(.*?)\W{2}\s(.*)` 71 | 72 | -> lembrar no regex101 -> `/gmi` 73 | 74 | 75 | explicacao dos grupos: 76 | 1. projeção 77 | 2. db 78 | 3. where field 79 | 4. where value 80 | 81 | replace: `db.$2.find({ $3: $4 }).project({ $1 })` 82 | 83 | só que, temos os `: true` para resolver 84 | 85 | 86 | --- 87 | 88 | dado: `db.users.find({ id: 1 }).project({ id, nome, endereco })` 89 | 90 | adicionar a virgula no `project` 91 | 92 | dado: `db.users.find({ id: 1 }).project({ id, nome, endereco, })` 93 | 94 | 95 | procurar por: `(\w+)(?=,)` 96 | 97 | replace por: `$1: true` 98 | 99 | resultado: `db.users.find({ id: 1 }).project({ id: true, nome: true, endereco: true, })` 100 | 101 | -------------------------------------------------------------------------------- /annotations.txt: -------------------------------------------------------------------------------- 1 | \W => nao palavras 2 | \w => paralavras 3 | 4 | ^(\d{3}).(\d{3}).(\d{3})-(\d{2}) -> pega os numeros (padrao mais iniciante) 5 | 6 | 123.123.123-14 7 | 321.321.321-32 8 | 200.300.500-19 9 | 10 | procurar por: [.-] 11 | replace por: vazio 12 | 13 | --- --------------------------------------------------------------------------------