Como sabemos, não exite uma ferramenta mais poderosa para processar grandes arquivos de texto rapidamente e confiavelmente.
Em Java, as expressões regulares tem a reputação de serem complexas e difíceis de se manter. Até o Java 1.4, sequer tinhamos classes nas bibliotecas padrões do Java.
E, infelizmente os famosos Pattern e Matcher não fizeram muito para melhorar a situação.
O Groovy tem mais uma forma de se declarar Strings que se chama slashy string.
assert java.lang.String == /olá slashy string/.classA única diferença entre este tipo de string e as de aspas duplas, é que estas não precisam ser escapadas por barras invertidas.
assert "Eu tenho \\d anos de idade." == /Eu tenho \d anos de idade./Isso pode fazer com que suas expressões regulares fiquem muito mais fáceis de serem lidas.
Uma slash string é uma GString, portanto, todas as substituições de variáveis são executadas normalmente.
def time = "1:42 PM" assert "A hora é 1:42 PM" -- /A hora é $time/Exemplo de expressão regular usando Groovy.
def time = /([0-9]|10|11|12):([0-5][0-9]) (AM|PM)/O Groovy utiliza as classes Pattern e Matcher como no Java, só que de forma mais transparente.
1. O operador ~ precedendo uma String, irá criar automaticamente um objeto do tipo Java Pattern.
assert java.util.regex.Pattern = (~/groovy/).getClass()2. O operador =~ vai receber uma string e uma regexp e criar um objeto Matcher.
def myMatcher = ("54417" =~ /\d{5}) // Procura por exatos 5 digitos assert myMatcher.matches() assert java.util.regex.Matcher == myMatcher.getClass()3. O operador ==~ é um operador boleano para testar se uma string segue um determinado padrão.
assert ("54418" ==~ /\d{5}/ == true
Construções básicas de expressões regulares em Groovy.
def regex = /foobar/ assert ("foobar" ==~ regex) ["a", "b", "c"].each { character -> assert( character ==~ /[abc]/ }
Como podemos ver, é muito mais simples escrever uma regex em Groovy.
O resto, é tudo igual a Java. O meu objetivo aqui não é ensinar tudo sobre regex, caso tenha alguma dúvida, de uma olhada no site da sun:
Tutorial Regex.
É isso ai galera, mais uma coisa aprendida!
Abraços
Nenhum comentário:
Postar um comentário