2012-08-22 10 views
5

Supponiamo che io sono un po 'di corda, ed eseguire le seguenti prove su di esso:Substring viene trovato, ma espressione regolare non riesce

response.indexOf("</p:panelGrid>"); 
response.matches(".*</p:panelGrid>.*"); 

Come è possibile che indexOf trova la sottostringa (che non restituisce -1), ma il l'espressione regolare nel secondo test è non corrispondenza?

Mi sono imbattuto in questo problema durante il tentativo di scrivere un test che verifica se i tagli sono resi correttamente in JSF con Pax Web. Non sono stato in grado di riprodurre questo comportamento al di fuori di questo test.

+0

Probabilmente hai caratteri di escape. – m3th0dman

+6

Fornire una stringa che presenti tale comportamento. –

risposta

7

Il . corrisponde a tutto tranne che ai caratteri di nuova riga. È necessario modificare la stringa di regex su

"(?s).*</p:panelGrid>.*" 

Quindi corrisponderà sempre.

+0

Suppongo che avrei dovuto leggere meglio il manuale. Grazie! –