Devolver una palabra con RegEx

15/12/2004 - 22:32 por Aldo Dell | Informe spam
Hola amigos,

hace un tiempo escribí una función que me devolvía la palabra que se
encontraba en una posición aproximada dentro de una cadena, por ejemplo:

c = "esta es mi cadena"
p = Palabra (c,3)

la función, en este caso me devuelve "esta" porque la posición 3 o cuarto
caracter está ocupada por la letra "a" de la palabra "esta".

El mecanismo que implementé es algo largo y poco eficiente pues se basa en
bucles, InStr, etc.

En estos días he intentado hacer algo similar con expresiones regulares
intentanto hacerlo más eficiente pero no lo logro.

¿Alguno me sugiere algo?
(Ya he consultado la documentación MSDN, busqué en libros y sites, he
probado diferentes enfoques con las patterns de RegEx pero de verdad no
consigo solución...)

de antemano muy agradecido!
Lic. Aldo Dell.

Preguntas similare

Leer las respuestas

#1 david
16/12/2004 - 15:36 | Informe spam
Hola Aldo,

Supongo que esta función te servirá.

Private Function Palabra(ByVal strCad As String, ByVal intPos As Integer) As
String
Dim intPosBlancIni As Integer
Dim intPosBlancFin As Integer
Dim strAux As String

strAux = Microsoft.VisualBasic.Left(strCad, intPos)
intPosBlancIni = InStrRev(strAux, " ") + 1
strAux = Microsoft.VisualBasic.Right(strCad, Len(strCad) - intPos)
intPosBlancFin = InStr(strAux, " ")
If intPosBlancFin = 0 Then intPosBlancFin = Len(strCad)
Return Mid(strCad, intPosBlancIni, (intPos - intPosBlancIni) +
intPosBlancFin)
End Function

Un saludo.

"Aldo Dell" escribió en el mensaje
news:
Hola amigos,

hace un tiempo escribí una función que me devolvía la palabra que se
encontraba en una posición aproximada dentro de una cadena, por ejemplo:

c = "esta es mi cadena"
p = Palabra (c,3)

la función, en este caso me devuelve "esta" porque la posición 3 o cuarto
caracter está ocupada por la letra "a" de la palabra "esta".

El mecanismo que implementé es algo largo y poco eficiente pues se basa en
bucles, InStr, etc.

En estos días he intentado hacer algo similar con expresiones regulares
intentanto hacerlo más eficiente pero no lo logro.

¿Alguno me sugiere algo?
(Ya he consultado la documentación MSDN, busqué en libros y sites, he
probado diferentes enfoques con las patterns de RegEx pero de verdad no
consigo solución...)

de antemano muy agradecido!
Lic. Aldo Dell.



Respuesta Responder a este mensaje
#2 Tristan
16/12/2004 - 16:04 | Informe spam
Realmente tienes varias formas de hacerlo mediante Regex. La más flexible y
potente es el método Match. Split quizá resulte más sencillo de comprender y
te serviría para lo mismo:

Dim frase As String = "esta es mi cadena"

Dim palabras As MatchCollection = Regex.Matches(frase, "\w+")
MsgBox(palabras(2).Value)

Dim palabras() As String = Regex.Split("esta es mi cadena", "\s+")
MsgBox(palabras(2))


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#3 Aldo Dell
17/12/2004 - 04:07 | Informe spam
Caramba, muchas gracias por el apoyo!!!!
Voy a implementar sus sugerencias..
Atentamente,
Aldo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida