If your desired text node is always in this position, you can use indexing like:
//div[@class='detalheDir2']/div[@class='preco']/text()[2]
If its always after the a <script> tag you can write:
//div[@class='detalheDir2']/div[@class='preco']/script/following-sibling::text()
If its always the last text node you can write
//div[@class='detalheDir2']/div[@class='preco']/text()[last()]
Maybe the fact that it contains a , could be the key:
//div[@class='detalheDir2']/div[@class='preco']/text()[contains(., ',')]
All of these work for your example, however variance in your input will make any of these break.
If you only know that it's there somewhere among the text nodes and only the format sets it apart from the others, you might be better off selecting all the text nodes and iterate through them, and matching with regexps on textContent.