Funcionou às mil maravilhas… era esta parte que eu estava a precisar:
((.|\s)*?)
Já agora se não custar muito pode-me explicar o q isto significa? para eu entender melhor…
Só há mais um problema… é q ele coloca tudo seguido na mesma linha… sabe como posso dar a voltar a isto? Talvez substituindo o caracter de final de linha por um ? como represento o caracter de final de linha nas expressoes regulares, sabe?
Esse trecho ta cheio de redundancias e tem 1 erro.
O escape ‘s’ não existe, vc que queria dizer ‘\s’? Em vez de usar ‘.|\s’ é melhor passar a flag DOTALL pro Pattern.
usar ‘()?’ é redundante, '’ implica em 0 ou mais ocorrencias, ‘?’ implica em 0 ou 1 ocorrencias. A propria documentação da Sun classifica *? como redundante.
1 - o s está com a barra no post original, é no quote que saiu sem barras
2 - vc tem razão, o *? é redundante
3 - vc tem razão também quanto ao DOTALL
4 - não sou nenhum mago das strings
5 - Não gritem PINHEIROS, LAAAAPA, VILA MADALEEEENAAA no meu ouvido que eu não sou surdo :?
uma pergunta final… como é que eu colocava caso eu quisesse fazer a mesma coisa q fiz em cima mas em que a parte do meio entre as tags NÃO PUDESSE conter a string [/zode] por exemplo… alguem sabe?
[quote=“Morcego”]
Poix… o problema é q se eu tiver por exemplo:
[code][zode]sdfsdfsdf[/zode][zode]sdgsg[/zode]
Ele pega no 1º [zode] e no ultimo [/zode] e faz apenas uma transformacao em vez de reconhecer as duas…[/code][/quote]
bom, daí é só você dizer para a expressão regular que você não quer o caminho mais longo entre os dois pontos (greedy regex) e sim todos os caminhos (non-greedy regex), ou seja, é só voltar a acrescentar o “redundante” *? e problema resolvido
ok para mais informações veja a documentação da API java.util.regex, tem muita coisa lá ou procure por “regular expressions” no google, é um assunto bem interessante. No meu caso eu sempre acrescento um “-perl” na busca, porque se eu quisesse ler hieróglifos seria arqueólogo.