debería Prefacio esto diciendo que estoy trabajando con VB6 & RegExpRegExp expresión regular Buscar y reemplazar sólo palabras completas
Estoy tratando de encontrar las palabras completas y suplentes, por "palabras completas" me refiero a una la coincidencia válida no es una subcadena de otra palabra, aunque algunos caracteres especiales estarán bien. Soy un principiante en expresiones regulares. Esto es lo que estaba intentando:
([^a-z]+)(Foo)([^a-z]+)
Parece cerrado, pero estoy teniendo problemas en ciertas situaciones.
Por ejemplo, si encuentro la cadena
Foo Foo
o
Foo(Foo)
o en cualquier parte de una línea termina con Foo y la siguiente línea comienza con Foo
This is a line with Foo
Foo starts the next line
En cualquier de estos casos, solo el primer Foo se corresponde.
Bueno, tal vez no es un problema con el partido, sino más bien mi método de reemplazo. No sé exactamente cómo puedo verificar eso. Estoy usando grupos para reemplazar lo que limita carbón se corresponde con la expresión, así:
regEX.Replace(source, "$1" & newstring & "$3")
Así que en resumen quiero evitar corresponder: FooBar barfoo
Cualquiera de los siguientes sería válida partidos
Foo Foo Foo bar
foo_bar
foo.bar
Foo, bar
Foo (bar)
Foo (Foo)
Si alguien amablemente me puede mostrar la forma correcta de hacer esto le agradecería mucho que!
editado
Parece que hablé un poco demasiado pronto con respecto a la primera solución a continuación. Después de algunas pequeñas pruebas y lecturas adicionales, veo que el guión bajo es una palabra char y, por lo tanto, el patrón anterior no coincidirá. Se me ocurrió esto, lo que hace el truco, ¿hay una mejor manera?
(\b)(Foo)(\b|_)
regEX.Replace(source, "$1" & newstring & "$3")
Funciona, pero parece un poco descuidado.
Muchas gracias. Tengo mucho que aprender sobre expresiones regulares. Tuve que hacer un pequeño cambio, pero parece haberlo hecho. Simplemente \ bFoo \ b –
Bueno, no era del todo perfecto. Modifiqué mi publicación original anterior. Los comentarios son bienvenidos –
subrayado se considera un "carácter de Word", por lo que '\ b' no coincidirá entre una letra y un guión bajo. Sin embargo, hay una forma de hacerlo. Avísame si quieres que te muestre – Bohemian