2010-04-20 11 views
16

Estoy tratando de encontrar las palabras comienza con un carácter específico, como:expresión regular para encontrar palabras que comienzan con un carácter específico

Vestibulum #text Segunda lorem ipsum. cómo # eres tú. Está bien. Hecho. Algo #else ahora.

Necesito que todas las palabras comiencen con "#". entonces mis resultados esperados son #text, #are, #else

¿Alguna idea?

+2

Marcó esta etiqueta con C# y javascript. ¿Dónde estás tratando de hacer esto? – womp

+0

va a hacer en C# –

Respuesta

29

Buscar:

  • algo que no es un carácter de palabra a continuación
  • #
  • alguna palabra caracteres

Así que trate esto:

/(?<!\w)#\w+/ 

O en C# se vería así:

string s = "Lorem ipsum #text Second lorem ipsum. How #are You. It's ok. Done. Something #else now."; 
foreach (Match match in Regex.Matches(s, @"(?<!\w)#\w+")) 
{ 
    Console.WriteLine(match.Value); 
} 

Salida:

#text 
#are 
#else 
+1

Ah, buena captura ... El límite de palabras no funcionará antes del #, ¿verdad? Pero en javascript no puedes hacer look-back negativo, ¿verdad? –

+0

@JeffB: Tienes razón. Sin embargo, esto funcionará en C#. –

2

de ajuste de una palabra empezando por el nº después de un espacio en blanco o el comienzo de una línea. La última palabra límite no es necesaria según tu uso.

/(?:^|\s)\#(\w+)\b/ 

Los paréntesis capturarán su palabra en un grupo. Ahora, depende del idioma de cómo aplicar esta expresión regular.

El (?:...) es un grupo no capturable.

9

Probar este #(\S+)\s?

+0

¡Manera más simple, buen trabajo! –

+2

Esto devolverá "#word" en lugar de "#word". ¿El \ s? no es necesario – zincorp

+0

@zincorp por eso hay un 'grab group 1 – Peter

Cuestiones relacionadas