É obrigatório que todo programador aprenda expressões regulares? [fechadas]

82

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:

usuário
fonte
55
Eu, pessoalmente, sei o que são, quando usá-los e como pesquisar no Google sintaxe. encolhe os ombros
Tyanna
35
É uma obrigação para todos os usuários avançados. E os programadores precisam ser usuários avançados para serem produtivos.
SK-logic,
8
Por que você não gostaria de aprendê-los? Você já encontrou pelo menos uma situação em que se beneficiaria de conhecê-las. Não é lógico que você se encontre em uma situação semelhante no futuro?
FishBasketGordo
23
Apenas aqueles que trabalham com texto :)
Steve Jackson

Respostas:

113

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.

ptyx
fonte
4
Concordo, é uma boa pergunta para qualquer desenvolvedor experiente. Mas pedir a um recém-formado sem experiência de trabalho sobre eles é provavelmente um pouco injusto - a menos que eles realmente desejem filtrar candidatos com nenhuma experiência prática em programação.
SK-logic,
2
@ SK-logic: Depende da escola. Todos nós tivemos um curso obrigatório no segundo ano que fez um uso bastante pesado de expressões regulares (eu admito, foi aí que eu fiquei viciado nelas;)). E mais do que alguns cursos de nível sênior os trouxeram novamente, embora nunca com tanta intensidade.
FrustratedWithFormsDesigner
Concordo com os comentários acima - eu não esperaria que alguém recém-saído da escola conhecesse necessariamente expressões regulares. Mas eu ainda posso perguntar.
Ptyx
13
Eu sou um matemático, então não tenho formação formal em ciência da computação, mas eu pensaria que as expressões regulares foram realmente ensinadas nos cursos da faculdade, enquanto discutia gramáticas, analisadores, autômatos e outros enfeites. Na verdade, eu esperava que alguém recém-saído da faculdade tivesse um conhecimento melhor do que um programador experiente, sem estudos de CS. : - /
Andrea
8
@ Andrea, quando eu estava na universidade (BS em Ciência da Computação), expressões regulares foram realmente abordadas ao aprender gramáticas e autômatos. No entanto, foi apenas o conceito formal que foi coberto, não os aplicativos. Não aprendemos a sintaxe da expressão regular compatível com POSIX ou Perl, nem como usá-las em nossa codificação. Aprendemos como desenhar um diagrama de estados de um autômato de estado finito, escrever isso como uma expressão regular etc. Letras gregas estavam envolvidas, não arquivos grep e de texto.
Adam Jaskiewicz
54

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.

eykanal
fonte
19
Isso é tão verdadeiro quanto dizer que entender a lógica booleana é útil, mas não é obrigatório.
Oded
1
@ Oded: Eu não encontrei nenhum uso para a lógica booleana ensinada no meu curso.
DeadMG 8/12/12
16
@DeadMG, eu uso lógica booleana o tempo todo, como nas conversões: 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.
precisa saber é o seguinte
7
Gosta de controle de versão? Ou teste de software?
9283 Konrad Rudolph
2
@ruakh - Concordo que são extremamente úteis; Eu mesmo os uso o tempo todo. Eu acho que todos os programadores deveriam aprender a usar expressões regulares em algum momento de sua carreira. A pergunta, no entanto, não fez isso.
eykanal
33

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".

Jonathan Rich
fonte
1
Os programadores do LHC podem usar expressões regulares para pesquisar arquivos de dados produzidos por sensores. Os programadores de jogos podem usar expressões regulares para pesquisar os arquivos de log produzidos por seus jogos. Ok, eles podem não precisar , mas provavelmente poderia facilitar muito essas tarefas.
FrustratedWithFormsDesigner
1
Eu concordo, mas se eu estivesse entrevistando para uma posição de programador de jogos, ainda contrataria alguém se eles não soubessem o que era uma expressão regular. Se eu estivesse contratando alguém com uma função tradicional de programação de negócios que não sabia o que eram expressões regulares, provavelmente elas não seriam contratadas.
Jonathan Rich
Isso é justo, eu acho.
FrustratedWithFormsDesigner
7
Os físicos de partículas trabalham principalmente em ambientes unix, mas, como todo o resto do computador relacionado à comunidade, a maioria das habilidades é transmitida por tradições orais. Os níveis de sofisticação nos regexps variam. Mas não pesquisamos os dados com regexps: existe muito e não está nos formatos de texto. Pesquisamos logs e bancos de dados ad hoc, códigos e documentação meia-avaliação, assim como todos os outros.
#
1
@FrustratedWithFormsDesigner, eu não contrataria um programador de jogos que não conhecesse regex. A programação é, por natureza, intensiva em informações, independentemente do campo . Não importa o que você faz - em qualquer disciplina você tem código-fonte, editores de texto com capacidade para regex e arquivos de log. Sem regex, você será significativamente menos eficiente na execução de determinadas tarefas (mesmo que não precise escrever uma única linha de regex no jogo enviado). Não estou dizendo que o regex é necessário para um programador de jogos. Só estou dizendo que não contrataria um que não soubesse.
Ben Lee
22

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 .

Oded
fonte
2
Isso é para mim uma questão de gosto. Eu realmente nunca tive a necessidade deles. Eu os usei em alguns projetos, então eu sei como eles funcionam, mas eu poderia facilmente ter continuado sem vê-los sendo mal utilizados com mais frequência do que senti a necessidade deles. Para simples um padrão e assim como você pode usar a manipulação de cadeia para o complexo e é mais rápido usar (e) BNF, pelo menos, se você gosta de mim estão acostumados a trabalhar com analisadores
Rune FS
15

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.

Rune FS
fonte
Programadores que não conhecem expressões regulares geralmente criam uma grande pilha de WTF quando uma expressão regular funcionaria muito bem. Programadores que SOMENTE conhecem expressões regulares geralmente criam uma pilha menor, mas massivamente incorreta, de WTF tentando processar linguagens não regulares (por exemplo, HTML) com expressões regulares.
kevin Cline
14

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".

JohnTESlade
fonte
Por que você não usa apenas um ide que suporta a refatoração?
NimChimpsky
2
Se eu tivesse feito a pergunta neste post, eu lhe daria a marca de seleção. Essa é a razão mais importante pela qual nunca contrataria alguém que não conhecesse regex. É uma poderosa ferramenta de edição de código e pesquisa de log , mesmo que você nunca precise escrever uma única linha de código que a utilize. Alguém que não sabe que as ordens de magnitude serão menos eficientes em determinadas tarefas diárias.
Ben Lee
10

Jeff Atwood escreveu um ótimo blog sobre expressões regulares, nele há uma citação incrível:

Some people, when confronted with a problem, think "I know, I'll use regular 
expressions." Now they have two problems. [Jamie Zawinski]

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.

Makach
fonte
8

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.

Karl Bielefeldt
fonte
6

para citar outra resposta:

Expressões regulares são uma maneira muito concisa de expressar como combinar padrões no texto.

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.

NimChimpsky
fonte
2
Muito texto é sempre específico do domínio. Você é um programador, afinal. O texto (na forma de código-fonte) é seu domínio. A manipulação eficiente de texto com expressões regulares torna você um programador mais eficiente.
Quanticle
2
@ artigo que não faz nenhum sentido. Você realmente manipula seu código-fonte com expressões regulares? Isso soa como um pesadelo absoluto. Expressões regulares fazem parte do seu código e ele interage com dados específicos do domínio.
NimChimpsky
3
Eu manipulo o código fonte com expressões regulares. A refatoração de grandes pedaços de código manualmente é tediosa e propensa a erros. O uso de um editor que suporte a expressão regular localizar e substituir (dica: praticamente todo editor suporta a localização e substituição de expressões regulares) torna a refatoração muito mais fácil.
quanticle
3
@ Dunk, ele não está dizendo que é um grande ganho de eficiência ao longo da vida de um projeto, mas que pode ser um grande ganho em um pequeno período de tempo. Também refatorei onde havia centenas, até milhares, de alterações em dezenas de arquivos. Ao longo da vida do projeto, as horas economizadas são insignificantes, mas eu certamente não queria levar horas ou dias que levariam para fazer as mesmas alterações manualmente. Os IDE modernos podem fazer isso por você sem escrever um regex, mas às vezes não podem (religar um padrão de atribuição comum, por exemplo).
jmoreno
2
@NimChimpsky Regexps funciona em qualquer lugar. IDEs e ferramentas de refatoração funcionam apenas para idiomas específicos. Por exemplo, sua ferramenta de refatoração permitirá que eu percorra todos os meus modelos e localize / exclua uma string semelhante a um número de telefone ( sites.google.com/site/steveyegge2/… )?
Quanticle
4

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!

Xeoncross
fonte
4

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 é

  • O que são expressões regulares e expressões regulares.
  • Que tipo de coisas eles fazem eficientemente (analisando idiomas comuns)
  • Que tipo de coisas são ineficientes (analisando coisas aninhadas, usando toneladas de referências anteriores)
  • Onde obter informações sobre a sintaxe sempre que você precisar ler ou escrever uma.

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!

hugomg
fonte
Eu acho que esse é um ponto muito bom. Saber usar referências posteriores e outros recursos avançados de alguns mecanismos de ER é apenas moderadamente útil. Na maioria dos casos, a combinação do uso de ERs com um pouco de lógica é mais legível e fácil de manter.
Mark Bessey
3

Como já mencionado Regex é uma ferramenta , uma ferramenta muito útil IMHO.

Considere este exemplo:

//fomat number using string.replace and regex in javascript
function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
} 

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

emont01
fonte
2
e isso não é complexo? isso usa vários recursos especiais que não estão no conjunto de regex padrão. um comprimento simples e preenchimento faria muito bem para este
catraca aberração
2

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.

Den
fonte
2

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.

Aron Cederholm
fonte
Além disso, é inútil aprender as especificações completas de cor no começo, pois existem muitos dialetos diferentes. Em vez disso, tente se concentrar em aprender o básico: (1) crie algumas regexps simples e aprenda o significado de. * + {} [] () e - e algumas classes básicas. (2) com uma determinada especificação em suas mãos, tente entender o que está acontecendo nos regexpes que você encontra.
Aron Cederholm
Para que você usa reg exps no yr web dev. É o que eu faço e eu usei como 5 vezes em 10 anos +.
NimChimpsky
Para iniciantes: Analisando ou validando a entrada do usuário (por exemplo, e-mail, CEP / código postal, formulários de pesquisa do usuário). Mas também para finalidades I18n e l10n para seqüências de conversão personalizadas e variáveis ​​em vários idiomas / localidades. E eles certamente vêm com a ajuda de alguma detecção de erros e muita manipulação de erros. E no mundo CMS / blogs / comentários para marcação de wiki / fórum. Para dados externos (entrada do usuário, páginas raspadas, recursos sincronizados etc.), análise, manipulação e reescrita de conteúdo / links / qualquer outra coisa. Plus para toda uma série de finalidades estatísticas e loggings (detecção de navegador, referer classificação, ...)
Aron Cederholm
-1 para um comentário tão insanamente ignorante "Um verdadeiro programador ..."
Dunk
É uma maneira bastante superficial de validar a entrada do usuário e eu ficaria surpreso se o seu regex fosse 100% exato (a validação de email é a famosa). E eu não grok essas "seqüências de tradução personalizadas e variáveis ​​em vários idiomas / localidades" que você traduz entre idiomas usando regex - er wtf? Objetivos de estatísticas - você faz estatísticas com expressões regulares? Reescrever links / conteúdo com regexs parece um cheiro de código para mim.
NimChimpsky
1

É 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.

jmoreno
fonte
1

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.

Bento
fonte
1

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.

TheDPQ
fonte
0

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!

Smokefoot
fonte
0

Depende da área / plataforma em que você está trabalhando

  1. 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 :)).

  2. 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.

Noname
fonte
0

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.

Larry Cinnabar
fonte
0

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.

Avi
fonte
0

Rob Pike não pensa assim :

Expressões regulares são difíceis de escrever, difíceis de escrever bem e podem ser caras em relação a outras tecnologias. Técnicas padrão de lexing e análise são tão fáceis de escrever, tão gerais e adaptáveis, que não há razão para usar expressões regulares.

Outra maneira de ver isso é que lexers e análise estão combinando padrões definidos estaticamente, mas a força das expressões regulares é que elas fornecem uma maneira de expressar padrões dinamicamente. Eles são ótimos em editores de texto e ferramentas de pesquisa, mas quando você sabe, em tempo de compilação, tudo o que procura, expressões regulares trazem muito mais generalidade e flexibilidade do que você precisa.

Incentivar expressões regulares como uma panacéia para todos os problemas de processamento de texto não é apenas uma engenharia lenta e preguiçosa, mas também reforça seu uso por pessoas que não deveriam usá-las.

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. :)

Weston C
fonte
0

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.

Jonathan Henson
fonte