【发布时间】:2012-07-28 01:26:34
【问题描述】:
我应该先声明我正在使用 VB6 和 RegExp
我正在尝试查找和替换整个单词,“整个单词”是指有效匹配不是另一个单词的子字符串,尽管一些特殊字符可以。我是正则表达式的新手。这就是我正在尝试的:
([^a-z]+)(Foo)([^a-z]+)
看起来很接近,但在某些情况下我遇到了一些麻烦。
例如,如果我找到字符串
Foo Foo
或
Foo(Foo)
或任何以 Foo 结尾且下一行以 Foo 开头的地方
This is a line with Foo
Foo starts the next line
在任何这些情况下,只有第一个 Foo 匹配。
好吧,也许这不是匹配问题,而是我的替换方法。我不知道如何验证这一点。我正在使用组来替换表达式匹配的任何边界字符,如下所示:
regEX.Replace(source, "$1" & newstring & "$3")
所以总而言之,我想避免匹配: 富吧 吧台
以下任何一项都是有效的匹配项:
富富
富吧
Foo_bar
Foo.bar
福,酒吧
Foo(酒吧)
富(Foo)
如果有人能告诉我正确的方法,我将不胜感激!
已编辑
关于下面的第一个解决方案,我似乎说得太早了。经过一些测试和进一步阅读,我看到下划线是一个单词 char,因此上述模式与它不匹配。我想出了这个技巧,有没有更好的方法?
(\b)(Foo)(\b|_)
regEX.Replace(source, "$1" & newstring & "$3")
它有效,但似乎有点草率。
【问题讨论】:
标签: regex