Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/07/2010, 15:57
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Problema con expresion regular

Cita:
Iniciado por mayid Ver Mensaje
Quizas me equivoco pero si estas encapsulando en | entonces no hay necesidad de escapar las barras. o si?

Respecto a esto, por que insistir tanto? .*\s*.*?\s*.*\s*?

No bastaría con esto? .*?

De hecho estás poniendo un modificardor s cuando termina la expresion. No se, yo a veces uso expresiones regulares pero no soy conocedor.
Respecto a escapar las barras, es cierto, da igual que las escapes o no ya que el modificador son tuberias |

Y a lo de insistir tanto es porque me baso en la herramienta online, que te va mostrando que elementos estás seleccionando segun vas aplicando tu expresión regular... y si no lo hacia así no me marcaba todo hasta .*\s*.*?\s*.*\s*?<span class="planet-name">


Cita:
Iniciado por pateketrueke

recuerda que usar .*? puede resultar muy codicioso...

en una expresión es mejor decir: lo que si puede ser, o todo lo que no puede ser...

osea, que deberías evitar la mayoría del tiempo usar comodines de ese tipo... y en su defecto, usar grupo que solo consideren los caracteres posibles... mas no todos los posibles, que no es lo mismo!!
Es muy codicioso pero últimamente estoy teniendo unos problemas tremendo para seleccionar hasta el siguiente dato útil.

Sin ir más lejos, otro ejemplo:

Para seleccionar estos 3 valores:
205.502
83.521
22.984

Necesito emplear 3 expresiones
Código PHP:
Ver original
  1. <span id="resources_metal" class="">\s*(.*?)<\/span>
  2. <span id="resources_crystal" class="">\s*(.*?)<\/span>
  3. <span id="resources_deuterium" class="">\s*(.*?)<\/span>

porque soy incapaz de conseguirlo con una sola, aun empleando métodos codiciosos como .*? O_O!! no lo entiendo, bueno si, lo que veo es que el método .*? no pilla los espacios en blanco no? al menos no en la página de rubular.com :S

Código:
                    <span class="value">
                        <span id="resources_metal" class="">
                            205.502                   </span>
                   </span>
            </li>
        	<li id="crystal_box" class="crystal tipsStandard"
            	title="|<B>Cristal:</B> <br><span class=''>83.521/865.000</span><br><span class='undermark'>(+3.118)</span>">
                <img src="/game/img/layout/ressourcen_kristal.gif" />
                <span class="value">

                    <span id="resources_crystal" class="">
                        83.521                </span>
                </span>
            </li>
        	<li id="deuterium_box" class="deuterium tipsStandard"
            	title="|<B>Deuterio:</B> <br><span class=''>22.984/255.000</span><br><span class='undermark'>(+912)</span>">
                <img src="/game/img/layout/ressourcen_deuterium.gif" />
                <span class="value">
                	<span id="resources_deuterium" class="">

                        22.984               	</span>
               	</span>
            </li>
        	<li id="energy_box"
Es posible?

Muchas gracias de antemano!