2010-12-11 9 views
57

Tengo un feed en Yahoo Pipes y quiero hacer coincidir todo después de un signo de interrogación.¿Regex combina todo después del signo de interrogación?

Hasta ahora he descubierto la manera para que coincida con el signo de interrogación utilizando ..

\? 

Ahora Solo para hacer todo lo que está detrás de/sigue el signo de interrogación.

+2

'\?. *' Coincide con todo (incluyendo una cadena vacía) después de '?'. – khachik

+0

¿Qué lenguaje de programación está utilizando? –

+1

Para aquellos que usan Java, es '" \\? "' – CodyBugstein

Respuesta

30

Prueba esto:

\?(.*) 

Los paréntesis son un grupo de captura que se puede utilizar para extraer la parte de la cadena que está interesado en

Si la cadena puede contener nuevas líneas que pueda tener. para usar el modificador "dot all" para permitir que el punto coincida con el nuevo carácter de línea. Si tiene que hacer esto o no, y cómo hacerlo, depende del idioma que esté utilizando. Parece que olvidó mencionar el lenguaje de programación que está utilizando en su pregunta.

Otra alternativa que se puede utilizar si su idioma apoya las afirmaciones de ancho fijo de búsqueda hacia atrás es:

(?<=\?).* 
+0

¿Oh el ancho fijo? ¿Puedo mirar atrás para algo como esto? Temas: código, programación, diseño ¿Debo seleccionar los dos puntos y mirar hacia atrás hasta el límite de temas y avanzar hasta el final en la línea? (en este caso, el final de la línea es "diseño"). – Mark

+0

@Mark: ¿Qué idioma estás usando? –

+0

Estoy usando Yahoo Pipes que exceptúa Regex. Me respondieron esta pregunta y ahora busco una expresión regular que seleccione 6 caracteres detrás de dos puntos y tantos (todos) hacia adelante. – Mark

142
\?(.*) 

desea que el contenido del primer grupo de captura.

+0

gracias eso es lo que necesitaba. – Mark

+13

@Mark si esto es lo que necesita (¡aunque esta pregunta es antigua!), Marque esto como una respuesta. –

+4

@Dreamonic No creo que esté sucediendo :( – Starkers

2

Echa un vistazo a este sitio: http://rubular.com/ Básicamente, el sitio te permite ingresar texto de ejemplo (lo que estarías buscando en tu sitio) y luego construir la expresión regular resaltará lo que se está emparejando en tiempo real.

+0

Gracias por eso, ¿sabes cómo unir dos puntos? ¿Y una cierta cantidad de caracteres antes del signo de dos puntos? – Mark

+0

'/ ([a-zA- Z] {4}):/'coincidirá con' Test: Welcome' y grab 'Test' –

8
\?(.*)$ 

Si desea hacer coincidir todos los caracteres después de "?" puede usar un grupo para hacer coincidir cualquier char, y será mejor que use el signo "$" para indicar el final de la línea.

+1

En la mayoría de las implementaciones de expresiones regulares, el' .' por defecto no coincide con el nuevo carácter de línea. Como resultado, incluso sin el final de carácter de línea en la expresión que coincidiría hasta el final de th línea e –

7

Con la de búsqueda hacia atrás positiva técnica:

(?<=\?).*

(estamos en busca de un texto precedido por un signo de interrogación aquí)

Input: derpderp?mystring blahbeh 
Output: mystring blahbeh 

Example

Básicamente el ?<= es una construcción de grupo, que requiere el signo de interrogación escapado, antes de poder hacer cualquier coincidencia.

Funcionan muy bien, pero no todas las implementaciones los admiten.

Cuestiones relacionadas