2011-11-29 19 views
5

¿Cómo puedo reconocer una palabra con expresiones regulares que podría contener números en ella? Así que quiero capturar "cadena1", "12 pulgadas", "log4net". Pero no 12/11/2011 o 18? Unfortunetly \b[\p{L}\d\p{M}]+\b agarra números también.palabra que contiene números

Respuesta

2

Este:

Regex regexObj = new Regex(@"\b(?=\S*[a-z])\w+\b", RegexOptions.IgnoreCase); 
    Match matchResults = regexObj.Match(subjectString); 
    while (matchResults.Success) { 
     // matched text: matchResults.Value 
     // match start: matchResults.Index 
     // match length: matchResults.Length 
     matchResults = matchResults.NextMatch(); 
    } 

viene a la mente.

" 
\b   # Assert position at a word boundary 
(?=   # Assert that the regex below can be matched, starting at this position (positive lookahead) 
    \S   # Match a single character that is a “non-whitespace character” 
     *   # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
    [a-z]  # Match a single character in the range between “a” and “z” 
) 
\w   # Match a single character that is a “word character” (letters, digits, etc.) 
    +   # Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
\b   # Assert position at a word boundary 
" 
+0

Gracias. En realidad tengo un problema un poco más difícil: necesito reconocer frases por espacios o guiones y tengo esto: (? <= \ B ([\ p {L} \ p {M}] + | \ s) \ b) [\ s \ p {Pd} \ s] + (? = \ b [\ p {L} \ p {M}] + \ b). Los paréntesis izquierdo y derecho significan una palabra (pueden tener diéresis). Ahora veo que también has conectado alguna referencia hacia adelante. – Nickolodeon

+0

@Nickolodeon Creo que deberías editar tu pregunta de forma acordánea porque mi respuesta responde eso. Por favor, publique algunas muestras apropiadas de entrada/salida para que podamos ayudarlo. – FailedDev

+0

Bueno, lo siento, quería simplificar la pregunta, así que pregunté solo una parte, supongo. Necesito 1) Robocop - 3 => Robocop3. 2) Hola 2 => Hola2 3) Hola mundo => Helloworld. Eso es eliminar espacios o guiones de palabras si ninguno de los adyacentes es un número o fecha. – Nickolodeon

0

¿Quieres hacer una calcomanía con letras y números en ella? Esto debería funcionar: \b(\w+\d+|\d+\w+)[\w\d]+\b.

Cuestiones relacionadas