gostaria se puderem me ajudar, de conseguir fazer o seguinte regex:
Preciso pegar qualquer palavra que esteja enter “<$ $>”, mas dentro desses delimitadores eu posso ter numero, letra, espaço, pontuação e em qualquer ordem.
Exemplo:
“O texto está em <$ arquivo.txt $> e se encontra em <$armario_x$> e foi colocado na data <$10_09/ 09$> e o proprietario é
<$ Carol Programadora 001 $>.”
Nesse texto acima, eu queria um regex que pegasse todos os elementos que estão entre <$ $>, veja que eu posso ter espaço, numeros, etc.
Eu consegui fazer pra pegar com letras, numeros, mas sempre numa ordem definida, pra pegar qualquer coisa em qualquer ordem eu não consegui, poderiam me ajudar?
Rode o programa abaixo e o modifique caso necessário.
import java.util.regex.*;
import java.util.*;
class TesteRegex7 {
public static void main(String[] args) {
String teste = "O texto está em <$ arquivo.txt $> e se encontra em <$armario_x$> e foi colocado
na data <$10_09/ 09$> e o proprietario é <$ Carol Programadora 001 $>.";
// Explicando a expressão regular:
// \\$ - serve para bater com o "$"
// () - serve para agrupar o que desejo achar para poder usar group(1)
// . - bate com qualquer caracter
// *? - Serve para repetir a expressão anterior (no caso ".") 0 a infinitas vezes,
// mas usando o o método "não-ganancioso" (ou seja, bate
// com a expressão mais curta, não a mais longa possível).
Pattern pat = Pattern.compile ("<\\$(.*?)\\$>");
Matcher mat = pat.matcher (teste);
while (mat.find ()) {
System.out.println ("[" + mat.group(1) + "]");
}
}
}