2010-04-17 8 views
1

Mon HTML ressemble à:Java regex, ont besoin d'aide avec des caractères d'échappement

<td class="price" valign="top"><font color= "blue">&nbsp;&nbsp;$&nbsp;  5.93&nbsp;</font></td> 

J'ai essayé:

String result = ""; 
     Pattern p = Pattern.compile("\"blue\">&nbsp;&nbsp;$&nbsp;(.*)&nbsp;</font></td>"); 

     Matcher m = p.matcher(text); 

     if(m.find()) 
      result = m.group(1).trim(); 

ne semble pas être assorti.

Est-ce que je manque un caractère d'échappement?

+3

Évitez d'analyser le code HTML avec des expressions régulières, si possible. Utilisez un analyseur HTML à la place. –

+0

Pas d'analyse html en utilisant regex s'il vous plaît .. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

Répondre

2

Sauf si échappé au niveau de l'expression régulière, $ signifie correspondre à la fin de la ligne. Et pour obtenir le \ unique nécessaire pour échapper le $ il doit être échappé dans le littéral de chaîne; c'est-à-dire deux caractères \. Alors ...

... Pattern.compile("\"blue\">&nbsp;&nbsp;\\$&nbsp;(.*)&nbsp;</font></td>"); 

Mais les gens qui ont indiqué que vous ne devriez pas utiliser regexes pour analyser HTML sont tout à fait raison !! Sauf si vous voulez un code chroniquement fragile, votre code devrait utiliser un analyseur HTML strict ou non strict.

+0

J'ai essayé d'utiliser HtmlParser, mais j'ai obtenu coincé donc je vais la route regex! – Blankman

+0

@Blankman - Je pense que vous devriez revenir à HtmlParser. Ou si le problème est que vous avez malformé HTML, passez à un analyseur non strict comme HtmlCleaner. –

+0

voici la question htmlParser: http://stackoverflow.com/questions/2660866/parsing-html-using-htmlparser merci! – Blankman

1

Peut-être que vous avez besoin d'échapper $ (je pense, avec deux barres obliques)?

Questions connexes