online - regex python
Regex: emparejando hasta la primera apariciĆ³n de un personaje (11)
Esta no es una solución de expresiones regulares, sino algo lo suficientemente simple para la descripción de su problema. Solo divide tu cadena y obtén el primer elemento de tu matriz.
$str = "match everything until first ; blah ; blah end ";
$s = explode(";",$str,2);
print $s[0];
salida
$ php test.php
match everything until first
Estoy buscando un patrón que coincida con todo hasta la primera aparición de un carácter específico, diga un ";" - Un punto y coma .
Yo escribí esto:
/^(.*);/
Pero en realidad coincide con todo (incluido el punto y coma) hasta la última aparición de un punto y coma.
Esto coincidirá con la primera aparición solo en cada cadena e ignorará las ocurrencias posteriores.
/^([^;]*);*/
Esto fue muy útil para mí ya que estaba tratando de averiguar cómo hacer coincidir todos los caracteres en una etiqueta xml que incluye atributos. Me estaba topando con el problema de "coincide todo hasta el final" con:
/<simpleChoice.*>/
pero fue capaz de resolver el problema con:
/<simpleChoice[^>]*>/
Después de leer este post. Gracias a todos.
Haría;
/^(.*?);/
¿trabajo?
El ?
es un operador perezoso, por lo que la expresión regular agarra lo menos posible antes de hacer coincidir el ;
.
Necesitas
/[^;]*/
La [^;]
es una clase de caracteres , coincide con todo menos un punto y coma.
Para citar la perlre
del perlre
:
Puede especificar una clase de caracteres, encerrando una lista de caracteres en [], que coincidirá con cualquier carácter de la lista. Si el primer carácter después de "[" es "^", la clase coincide con cualquier carácter que no esté en la lista.
Esto debería funcionar en la mayoría de los dialectos de expresiones regulares.
Prueba /[^;]*/
Esa es una clase de carácter negador.
Prueba /[^;]*/
regex character classes
Google para más detalles.
Realmente un poco triste que nadie te haya dado la respuesta correcta ...
En regex,? lo hace no codicioso. Por defecto, la expresión regular coincidirá tanto como pueda (codicioso)
Simplemente añada un? ¡Y no será codicioso y combinará lo menos posible!
Buena suerte, espero que ayude.
texto de ejemplo:
"this is a test sentence; to prove this regex; that is g;iven below"
Si, por ejemplo, tenemos el texto de ejemplo anterior, el regex /(.*?/;)/
le dará todo hasta la primera aparición de punto y coma ( ;
), incluido el punto y coma: "this is a test sentence;"
"/^([^//]*)//$/"
funcionó para mí, para obtener solo las "carpetas" superiores de una matriz como:
a/ <- this
a/b/
c/ <- this
c/d/
/d/e/
f/ <- this
/^[^;]*/
El [^;] dice que coincida cualquier cosa excepto un punto y coma. Los corchetes son un operador que hace coincidir el conjunto, es esencialmente, coincide con cualquier carácter en este conjunto de caracteres, el ^
al principio lo convierte en una coincidencia inversa, así que haga coincidir cualquier cosa que no esté en este conjunto.