NULL on error flipping bits whilst updating pixels

Criando expressões regulares de uma maneira fácil

Recentemente encontrei um projeto muito bacana chamado VerbalExpressions que usa e abusa de fluent interfaces para construir expressões regulares, como é possivel notar, essa ideia já foi portada para diversas linguagens!

E como já existia um port para Python e para C++, decidi “portar” para Qt. Na verdade portar entre aspas, pois meu trabalho se resumiu a ”s/std::string/QString/g” fora outras pequenas mudanças e/ou otimizações, logo, os creditos são todos do autor do CppVerbalExpressions

Construir expressões regulares nem sempre é uma tarefa simples, exceto para aqueles que já leram o livro Expressões Regulares - Uma abordagem divertida, nesse caso ignore, pois você já está fera nisso ;)

Usando fluent inteterface esta árdua tarefa se resume numa versão “poética”, como veremos a seguir:

auto expression = QVerbalExpressions()
  .searchOneLine()
  .startOfLine()
  .then("http")
  .maybe("s")
  .then("://")
  .maybe("www.")
  .anythingBut(" ")
  .endOfLine();

qDebug() << expression; // ^(?:http)(?:s)?(?:://)(?:www.)?(?:[^ ]*)$
qDebug() << expression.test("https://www.google.com"); // true

Que resulta na seguinte expressão ^(?:http)(?:s)?(?:://)(?:www.)?(?:[^ ]*)$, legal né?

O código fonte se encontra em QtVerbalExpressions.