Eu sou novo em programação e, em uma entrevista, fiz uma pergunta sobre expressões regulares; Escusado será dizer que eu não poderia responder. Então, eu queria saber se eu deveria aprender a expressão regular? É uma obrigação para todos os programadores de todos os campos? Ou é uma obrigação para a programação de alguns campos específicos?
Perguntas relacionadas:
regular-expressions
usuário
fonte
fonte
Respostas:
Expressões regulares são uma ferramenta incrivelmente conveniente, disponível em tantos idiomas que a maioria dos desenvolvedores as aprende mais cedo ou mais tarde.
Para um entrevistador, eles são uma ótima maneira de investigar a experiência durante uma entrevista. Se você está entrevistando alguém que afirma anos de experiência que não os entende, precisa cavar mais.
fonte
Expressões regulares são uma ferramenta. Por acaso é uma ferramenta muito útil, muitas pessoas optam por aprender a usá-la. No entanto, não há um "requisito" para você aprender a usar essa ferramenta específica, assim como não há um "requisito" para você aprender qualquer outra coisa.
fonte
if (!(foo && bar))
=>if (!foo || !bar)
. Talvez você o tenha usado e não tenha percebido, ou talvez não tenha aprendido o material certo.Eu não ficaria surpreso se, por exemplo, um programador de jogos ou um programador do LHC nunca aprendesse expressões regulares. Eu posso até dar um passe para um programador de jogos sem saber SQL.
Mas, se você estiver trabalhando em sistemas de informação de qualquer tipo e se não souber expressões regulares, estará fazendo um desserviço.
Por outro lado, eu não esperaria que o seu programador de SI padrão conheça a matemática matricial que um programador de jogos faria. Existem disciplinas distintas de programador, no entanto, de nós devemos estar sob o guarda-chuva de "sistemas de informação".
fonte
Expressões regulares são uma maneira muito concisa de expressar como combinar padrões no texto.
O requisito de analisar e extrair dados do texto ou de validar se algum texto está em conformidade com um padrão específico surge com muita frequência na programação, então eu diria que sim, é importante aprender sobre eles e entendê-los.
Eles são uma boa ferramenta para ter em sua caixa de ferramentas e eu esperaria que qualquer programador experiente soubesse usá-los.
Um dos melhores recursos para aprender sobre expressões regulares é o livro de Jeffery Friedl, Mastering Regular Expressions . Como é bastante avançado, você pode lê-lo quando tiver mais experiência.
Você pode começar com o tutorial em regular-expressions.info .
fonte
Ao contrário da maioria das respostas aqui, não acho que o conhecimento de reg exs seja uma habilidade necessária para ser um programador produtivo. Quando entrevisto os candidatos a uma posição, eu me aprofundaria mais se eles se sentissem compelidos a trazer suas habilidades de se expor. Por quê? eles geralmente são usados em locais porque gostam do martelo certo, mas geralmente o que você precisava era de uma chave de fenda. Pesquise SO em HTML e regex e verá várias perguntas e vários motivos pelos quais regex é um desajuste.
A capacidade de realizar uma OOD adequada é necessária antes que eu defenda a contratação de um entrevistado, o conhecimento de expressões regulares certamente não é. E, na verdade, não acho que alguém acredite que você possa ser um programador mais produtivo, conhecendo regexs, mas carecendo de áreas como análise, design e conhecimento da estrutura usada
Claro que às vezes eles são úteis, mas nos meus mais de 20 anos como desenvolvedor profissional, acho que os usei menos de 20 vezes em código (e até codifiquei alguns scripts perl). Eu os uso regularmente para pesquisar e substituir embora.
fonte
Independentemente do domínio em que você está trabalhando, as expressões regulares são uma ferramenta útil para conhecer, porque a maioria das linguagens de programação é escrita como texto simples. O Regex é, portanto, uma ótima maneira de manipular e refatorar o seu código-fonte e ele está incorporado em muitos editores de texto. Vi inúmeros programadores fazendo alterações repetidas nos arquivos de origem quando uma expressão regular faria as alterações com muito mais rapidez e precisão.
É sobre isso que o Capítulo 3 do Programador Pragmático fala, com o texto simples sendo a "matéria-prima básica da programação".
fonte
Jeff Atwood escreveu um ótimo blog sobre expressões regulares, nele há uma citação incrível:
Também há uma ótima resposta para uma boa pergunta: um estouro de pilha que você pode querer verificar.
Você definitivamente deve saber um pouco sobre isso. Expressões regulares são fáceis de aprender, mas difíceis de dominar. Você não precisa aprender tudo para começar a usá-lo. Apenas seja sensato sobre isso.
tl; dr
Você precisa conhecer a tecnologia para poder tomar uma boa decisão sobre quando usá-la.
fonte
Eu trabalho em uma base de código incorporada que não possui uma biblioteca de expressões regulares disponível. Uma certa tarefa exigiu 275 linhas de código e levou cerca de duas semanas para depurar todos os casos de canto, entre o testador e o desenvolvedor. Mais tarde, escrevi uma função para fazer a mesma coisa que parte de um utilitário javascript. A mesma tarefa exata usando expressões regulares usou 10 linhas de código e funcionou perfeitamente em cerca de 15 minutos.
Você precisa de expressões regulares? Tecnicamente, não, mas é tolice permanecer intencionalmente ignorante de uma ferramenta tão eficiente.
fonte
para citar outra resposta:
Portanto, se essa é uma parte importante do seu trabalho, provavelmente existe uma maneira melhor de projetar o sistema que você está desenvolvendo. A menos que muito texto seja de domínio específico da sua área (por exemplo, bioinformática).
Trabalhei em três sistemas corporativos diferentes (em três empresas diferentes por dez anos) e os escrevi menos de cinco vezes, e isso inclui copiar e colar um validador de email básico duas vezes.
fonte
Expressões regulares podem ser consideradas uma ferramenta de processamento muito útil, em vários idiomas e plataformas. Eu posso usar regex no meu código, posso usar regex no meu editor, posso usar regex na linha de comando!
Não é apenas o que você precisa ou deve aprender. É mais como
UAU! EU AMO REGEX!
fonte
Você não precisa conhecer todas as peculiaridades de regex de cor para ser um grande programador, especialmente porque todas elas tendem a variar um pouco em torno de diferentes implementações e linguagens de programação. O que você não precisa saber é
De qualquer forma, você nem precisa se preocupar muito em saber se será necessário muito esforço para aprendê-las. Os operadores mais simples (
.
,*
,|
,()
, etc) são quase universalmente presente e percorrer um longo caminho!fonte
Como já mencionado Regex é uma ferramenta , uma ferramenta muito útil IMHO.
Considere este exemplo:
Apenas uma linha para converter, por exemplo, um número como este 1000000.00 em "1.000.000,00"
Usar qualquer outro método será muito mais complexo
fonte
Não é uma obrigação. Você só precisa estar ciente da existência deles e quando usá-los. É fácil encontrar detalhes de sintaxe e acertar usando o Google e as ferramentas online.
fonte
Eu realmente aconselho você a aprender regexps. No trabalho, quando contratamos programadores, os candidatos que não conhecem o regexp geralmente são eliminados rapidamente. Não porque eles absolutamente precisam conhecer expressões regulares, mas porque é um indicador muito bom do seu nível de compreensão da programação e do nível de dependência da programação.
Um verdadeiro programador conhece suas expressões regulares
No entanto, isso é um pouco tendencioso, pois estou envolvido principalmente com programação na Web, onde expressões regulares são algo que você deve encontrar muito, tanto no lado do servidor quanto no lado do cliente. Se você fosse um programador de montagem de um sistema embutido em uma máquina de lavar louça, provavelmente não encontraria expressões regulares. Mas isso ainda seria útil, pois na maioria dos casos você é mais capaz de exercer seu ambiente de desenvolvimento quando conhece expressões regulares (pesquise e substitua, pesquise um arquivo, pesquise vários arquivos, etc ...).
Além disso, você achará mais fácil ser reconhecido por outros programadores, se você o conhecer.
fonte
É uma obrigação? Você já sabe o que DEVE saber: que eles existem, o que são e para que são usados. Seu trabalho como programador é resolver problemas. Agora você já sabe o suficiente para começar a considerá-los em sua solução para resolver seu problema. Você deve aprender regexs? Absolutamente. A prioridade é sua: há trabalhos onde eles serão usados todos os dias e trabalhos onde eles nunca serão usados. Um guia simples seria a quantidade de padrões correspondentes aos problemas que você espera encontrar.
fonte
Hmm, eu preciso separar por vírgula e produzir esta lista de strings, deixe-me escrever uma função que contenha um loop for que use um argumento separador e continue anexando-os ... ou eu poderia apenas usar este comando 'join' existente.
Eu preciso classificar para esses objetos complexos com base em alguns atributos que cada objeto possui, deixe-me lembrar como escrever uma função de classificação que faça isso, oh não, espere, eu posso apenas usar a função de classificação padrão existente que essa linguagem suporta. Terei que aprender a escrever um comparador personalizado, mas não deve ser muito difícil, obviamente é melhor do que manter minha própria função de classificação.
Estou um pouco assustado com a idéia de métodos virtuais, mas isso deve me ajudar a reduzir essas listas, cada uma para um tipo diferente de item, para uma única lista. Então não preciso escrever meia dúzia de declarações semelhantes processando cada lista de uma maneira diferente. Acho que devo estudar muito e aprender essas coisas porque meu código será muito mais simples e mais limpo se eu fizer isso.
Preciso extrair desse arquivo de texto esses pares de palavras e valores entre todos esses outros ruídos, deixe-me escrever um analisador de cinquenta linhas para ler os caracteres um por um e se um deles parecer o início do que eu sou procurando, vou definir essa variável de estado e começar a analisá-la de maneira diferente etc. etc, é claro que meu caso é obviamente tão especial que ninguém mais se deparou com um problema como esse antes e inventou uma solução genérica que leva uma linha de código para fazer isso. Isso me lembra que eu deveria levar os livros de programação que nunca li para a livraria de segunda mão.
fonte
Resposta curta: Não. Mas .... conhecimento é poder.
Sou desenvolvedor web e acho que qualquer Expressão Regular de que geralmente preciso já foi escrita para mim. No entanto, tive problemas em copiar e colar e não perceber o que estava fazendo ou não, o que é um perigo de copiar e colar QUALQUER COISA.
Um exemplo: um regex de email copiado e colado não permitiu um período ou mais em um email permitido na especificação de endereço de email. De fato, muitas pessoas usam o gmail com [email protected], para que seja fácil filtrar 'sitename' caso eles escolham spam.
fonte
expressões regulares? Hmmm ... às vezes é útil conhecê-los, mas na maioria das vezes você sempre usa o mesmo. Eu tenho usado regex com bastante frequência, mas não vou dizer que sou bom com isso. Não gosto nada disso e acho que há coisas mais importantes a saber do que regex.
Mas na validação de formulários ou dados é muito útil. Penso que quase todas as formas profissionais são validadas com regex. ASP.NET usando-o.
Mas de todo: tente fazer uma expressão quando precisar e salve-a. Espero que você os use mais de uma vez. Mas não perca seu tempo com o RegEx!
fonte
Depende da área / plataforma em que você está trabalhando
Para aplicativos de desktop, você pode viver uma vida de kool sem saber nada sobre expressões regulares. Mas lembre-se, o Visual Studio tem pesquisa de expressão regular, mas gostaria de saber se alguém a usa regularmente. Estou pensando que não (você deve corrigir sua expressão regular primeiro porque pode fazer uma pesquisa :)).
Como desenvolvedor web, você provavelmente precisará aprender Expressão regular. Você pode se safar, pois pode encontrar facilmente um trecho de código on-line que será suficiente, mas o aprendizado ajudará.
Existem áreas como documentação, litígio, material jurídico, onde a expressão regular é uma ferramenta indispensável. Você precisa saber disso. Se não o fizer, simplesmente não conseguirá o emprego.
Portanto, se não faz parte de uma descrição do trabalho, nem se preocupe. Se você gosta de aprender, aprenda por diversão.
fonte
Expressões regulares são uma ferramenta muito útil e existem muitas situações em que o programador deve usá-las. Você não deve aprender todos de cor para usar. Basta usar referência e fazer sua tarefa. Após 10-20-50-100 (dependendo do programador) tarefas em que você usou expressões regulares, você as conhecerá de cor. Eles estão sendo aprendidos por si mesmos, você não deve aprendê-los especialmente.
fonte
Já vejo muitas respostas para isso, mas todas parecem ter o mérito de conhecer expressões regulares como uma ferramenta na caixa de ferramentas do programador.
Prefiro pensar em expressões regulares como o tipo de conhecimento que amplia a compreensão de como os computadores funcionam. Uma vez que alguém realmente entende o que é uma linguagem comum, e que você pode expressá-la com três operações simples, acredito que ela oferece algo além de simplesmente uma ferramenta para validar cadeias simples.
Eles tornam-se capazes de entender melhor a análise em geral, o que é útil para praticamente todos os tipos de programação e de entender como as ferramentas que usamos regularmente (compilador, editor, navegador etc.) funcionam.
Os benefícios práticos do uso de expressões regulares são obviamente enormes. Mesmo que você não "programe" com eles - eu uso expressões regulares procurando / substituindo no meu editor o tempo todo e medindo o quanto mais produtivas elas me tornam.
Portanto, embora não seja necessário, acho que é uma das primeiras ferramentas que um programador deve aprender.
fonte
Rob Pike não pensa assim :
Vale a pena notar que Pike reconhece que eles têm um lugar, é claro, e IMHO, expressões regulares são uma ferramenta bastante poderosa, que é absolutamente recompensada pelo tempo que passei aprendendo a usar e, desse ponto de vista, eu recomendaria absolutamente aprender eles. Mas é possível que o verdadeiro problema seja que eles são um curativo que me permitiu saber menos sobre lexing e análise do que eu deveria. :)
fonte
Deixe-me apenas dizer, as expressões regulares são frequentemente a ferramenta certa para o trabalho e são bastante úteis, especialmente em aplicativos que processam muito texto. No entanto, memorizá-los é loucura. Tenho uma folha de dicas fixada na parede com todos os caracteres especiais, âncoras, classes de caracteres, modificadores de padrões, metacaracteres ... Basta passar os 20 minutos necessários para aprender a usá-los e obter uma folha de dicas para manter faixa de tudo o resto. Tudo o que você precisa é poder escrever uma expressão regular quando precisar, o que geralmente ocorre a cada 6 meses - quase sempre que você se deparar com um problema em que elas são a melhor ferramenta a ser usada no trabalho. A menos que você esteja no Perl, Latex, Emacs ou em alguma outra equipe de processamento de texto pesado.
fonte