Recuperar texto entre duas strings (tags)

Olá, estou tentando capturar um texto que está entre duas strings, as quais são tags XML, data este texto abaixo, quero somente o que está dentro das tags e

<v1:specialMeasuresFrom/> <v1:specialMeasuresTo/> <product> <v1:internalCode>454455</v1:internalCode> <v1:subInternalCode>454455</v1:subInternalCode> <v1:barCode>7891141018572</v1:barCode> <v1:ncm>33051000</v1:ncm> <v1:icms> <m:cst>00</m:cst> <m:taxRate>17.00</m:taxRate> <m:commencementDate>2002-12-01-02:00</m:commencementDate> <m:expiryDate>2999-12-31-02:00</m:expiryDate> <m:legalProvision>Art. 63, I e §1º do RICMS/ES . Art. 71, I, "a" do RICMS/ES</m:legalProvision> <m:observations>Inexistente</m:observations> <m:additionalInformation>Inexistente</m:additionalInformation> </v1:icms> </product> </v1:fiscalScenarioSummary>

estou tentado fazer assim, e já tentei algumas pequenas variações neste código com base em pesquisas na internet, mas nada funcionou, acredito que talvez tenha que usar algun escape em algum caractere especial, como / ou <, já tentei também, alguém tem alguma sugestão?

[code] Pattern p2 = Pattern.compile("(.*?)");
Matcher m2 = p2.matcher(xmlSemNamespaces);

        while (m2.find()) {
            System.out.println(m2.group());
        }[/code]

tenta assim:

Pattern p2 = Pattern.compile("<product[^>]*>(.*?)</product>");  
Matcher m2 = p2.matcher(xml);  
while (m2.find()) {  
   System.out.println(m2.group(1));  
} 

não funcionou!! modifiquei assim, ele retorna a tag do produto, mas nada mais

Pattern p2 = Pattern.compile("<product[^>]*>(.*?)");

retorno

<product>

Já fiz algo parecido e usei a mesma expressão regular que vc usou (.*?), e funcionou,nao sei o porque nao vai.

Tente fazer assim:


Pattern p2 = Pattern.compile("<v1:specialMeasuresTo/><product>(.*?)</product>"); 

Ou coloca um \n entre o v1:specialMeasuresTo/ e o caso ele precise pular uma linha.

Suspeito que o problema são as novas linhas \n, teria como negar elas na expressão regex.

[code] Pattern p2 = Pattern.compile("<product[^>]>(.?)");
Matcher m2 = p2.matcher(“abc assim funciona asdf”);

        Pattern p2 = Pattern.compile("<product[^>]*>(.*?)</product>");
        Matcher m2 = p2.matcher("abc <product> assim não \n funciona </product> asdf");[/code]

teria que ser algo do tipo, para negar as novas linhas?

Pattern p2 = Pattern.compile("<product[^>]*>(.[^\n]*?)</product>"); Matcher m2 = p2.matcher("abc <product> assim funciona </product> asdf");

Já tentou compilar o Pattern com multiline?Pattern p = Pattern.compile(minhaRegex, Pattern.MULTILINE);