Google Refine: la expresión regular no funciona

Necesito hacer coincidir una expresión regular para una fachada de texto en google refine. Probé la expresión y no funcionó. Luego probé un caso simple de hacer coincidir la cadena lenovo en www.lenovo.com usando

value.match(/lenovo/)

en algunas de las filas mi valor toma valor www.lenovo.com ,

¿Cómo es que una coincidencia de cadena tan simple no funciona en Google refine? Estoy corriendo en Windows.

Por favor, avíseme si estoy cometiendo algún error de sintaxis obvio.

preguntado el 21 de mayo de 12 a las 12:05

2 Respuestas

¿Qué estás recuperando y qué quieres recuperar?

El valor de retorno de la función match() es nulo para no coincidencia o una matriz

La pestaña de ayuda dice:

coincidencia (cadena o expresión regular) devuelve: matriz de cadenas Devuelve una matriz de los grupos que coinciden con la expresión regular dada

Para un valor de entrada de "lenovo",
esta función: value.match( /lenovo/ )
debe devolver este valor: []

¿Quiere convertir esto en un valor Verdadero/Falso para su faceta, para probar la presencia/ausencia de esa cadena de texto? Podrías hacer algo como esto:

isNotNull( value.match( /lenovo/ ) )

contestado el 21 de mayo de 12 a las 13:05

Quiero hacer exactamente esto: tengo una URL: bing.com/… , quiero extraer el valor del parámetro q de la url. - darshan

Eso es ir un poco más lejos. Primero, para extraer un valor, necesita usar paréntesis para hacer una captura de expresiones regulares. Además, si desea convertir el resultado (una matriz) en el contenido de la matriz, extraiga el valor en la posición de índice cero [0]. Con eso en su lugar, solo necesita jugar con la expresión regular para extraer todo lo que sigue a "q=" hasta cualquier posible siguiente ampersand. Aquí hay una forma que funciona para mí con datos de muestra: value.match( /.*search\?q=([^&]+).*/ )[0] - Stuart

Necesita hacer un grupo en su expresión regular, por ejemplo, esto:

 value.match(/lenovo/)

lo que resulta en:

 []

debiera ser:

 value.match(/(lenovo)/)

lo que resulta en:

 ["lenovo"]

Que es probablemente más como lo que quieres. Luego puede indexar la matriz para recuperar el valor de la cadena:

  value.match(/(lenovo)/)[0]

Respondido el 31 de enero de 13 a las 21:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.