私は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")
要約すると、一致を避けたい: FooBar BarFoo
次のいずれかが有効な一致になります。
Foo Foo
Foo Bar
Foo_bar
Foo.bar
Foo、bar
Foo(バー)
Foo(Foo)
誰かがこれを行う適切な方法を親切に教えてくれれば、とても感謝しています!
編集済み
以下の最初の解決策については、少し早すぎたようです。少しテストしてさらに読んだ後、アンダースコアは単語の文字であるため、上記のパターンは一致しないことがわかりました。私はこれを思いついたのですが、もっと良い方法はありますか?
(\b)(Foo)(\b|_)
regEX.Replace(source, "$1" & newstring & "$3")
動作しますが、少しずさんなようです。