How the heck do I tackle them?
Como qualquer coisa nova:
10 Study
20 Practice
30 goto 10
Estudo
Eu acho que os professores mais bem sucedidos começam a ensinar qualquer assunto, primeiro fornecendo um pouco de fundo para o assunto. É importante ter um contexto do que você está aprendendo e, mais importante, por que você está aprendendo.
É toda correspondência de string
Expressões regulares são um meio de correspondência de padrões no texto. É uma linguagem declarativa, incorporada em várias outras linguagens de programação.
Gostaria de enfatizar que é uma linguagem declarativa, expressões regulares são úteis para expressar o que corresponde, mas elas não expressam de forma alguma como o programa é fazer a correspondência. Por essa razão, é possível usar expressões regulares muito rapidamente e muito lentamente na mesma linguagem de programação simplesmente usando um analisador RegEx diferente.
O motivo para a criação de expressões regulares é o mesmo para a criação da maioria das linguagens de programação: os programadores viram-se repetidamente executando a mesma tarefa complicada e decidiram que queriam uma maneira mais simples de escrever o código.
Alguns vão (e devem) queixar-se da minha sentença anterior dizendo algo como:
O RegEx não simplifica o programa.
é verdade
RegEx não torna qualquer programa mais simples, o RegEx torna a escrita mais simples do programa. Você ainda precisa ser minucioso em seus testes para ter certeza de que todos os casos corretos são correspondidos corretamente, e todos os casos incorretos não são. É realmente difícil testar "todos" e, com padrões complicados, é realmente difícil testar "a maioria". Na pior das hipóteses, você ainda deve estar testando "alguns" casos.
permite incorporar alguns exemplos Eu obrigatoriamente escolhi o mecanismo RegEx do JavaScript porque eu posso testá-lo ao vivo no navegador facilmente e porque eu não precisarei fazer nenhuma string escapando enquanto uso os literais do RegEx.
Quando você faz uma correspondência de string normal, testa um valor de string em relação a outro. Eles podem vir de qualquer lugar, mas no final são duas strings comparadas umas contra as outras:
if ( 'foo' == 'bar' ) doSomething();
Esse exemplo é uma droga porque nunca fará qualquer coisa
if ( foo == 'bar' ) doSomething();
Muito melhor; agora, na verdade, não sabemos de antemão se algo será ou não feito. Agora podemos começar a aceitar a entrada do usuário:
if ( prompt( 'Say "bar" to do something.' ) == 'bar' ) doSomething();
Maravilhoso, agora os usuários podem inserir bar
e algo acontecerá, até você receber relatórios de bugs dos usuários dizendo que "bar"
não está funcionando ou que "BAR" não está funcionando ou que eles digitaram BRA
100 vezes e nada acontece.
Ignorando os erros de ortografia e caracteres extras, 'bar' != 'BAR'
e os programadores precisam pensar em uma maneira de testar onde os caracteres estão no caso errado.
Solução simples, use toLowerCase
. Isso funciona maravilhosamente, mas e os nossos usuários que estão usando o inglês britânico sobre o inglês americano quando você está combinando something == 'color'
? Agora você terá que combinar something == 'color' || somthing == 'colour'
.
Longa história curta, padrões simples se transformam em muito código repetitivo muito rapidamente.
O exemplo de cor pode ser simplesmente combinado com:
/colou?r/.test( something )
uma sólida compreensão das noções básicas de expressões regulares pode reduzir significativamente a quantidade de tempo que você desperdiça reinventando a roda.
Onde estudar
A maioria dos idiomas que implementam expressões regulares tem pelo menos um recurso disponível para a sintaxe específica do uso de expressões regulares nesse idioma. Um para JavaScript pode ser encontrado no MDN
leia.
tudo isso.
então leia de novo.
Leva tempo para aprender, pense nisso como um investimento: uma hora para aprender o RegEx agora salva uma hora na próxima vez que você precisar fazer uma correspondência de padrão de string e depois outra hora na próxima vez.
Pratique
Depois de ler tudo sobre o RegEx, você provavelmente não entenderá a maior parte dele. Isso porque você não está de fato fazendo qualquer coisa com ele.
Mencionei porque escolhi o JS para este exemplo, peço-lhe para mexer com ele no seu navegador. É rápido e você pode fazer isso na sua barra de URL.
JS tem algumas maneiras diferentes e simples de usar o RegEx:
string.match( regex )
regex.exec( string )
regex.test( string )
Começando com algo simples como:
javascript:'color'.match(/colou?r/);
é uma maneira fácil de colocar o pé na porta. Brinque com ele, quebre, veja o que combina e o que não funciona.
Quando você ficar preso na prática, continue com 30
. Você precisa ler para aprender mais, mas precisa praticar para entender verdadeiramente o que aprendeu.