私は見つけようとして代替単語全体、「単語全体」私は意味でよ、私はVB6 &正規表現正規表現正規表現は、唯一
で働いていることを示すことによって、これを前置きする必要があり、全体の単語を検索と置換します有効な一致は別の単語の部分文字列ではありませんが、一部の特殊文字は大丈夫です。私は正規表現の初心者です。これは私が試していたものです:
([^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、バー
はFoo(バー)
はFoo(フー)
誰もが親切に私にこれを行うための適切な方法を示すことができる場合、私はそれを大幅にいただければ幸いです!
は、私があまりにもすぐ下の最初の解決策について少し話したように見えます
を編集しました。少しテストした後にもう少し読んだら、アンダースコアは単語のcharであることがわかります。したがって、上記のパターンは一致しません。私はこれを思いついたのですが、これは良い方法ですか?
(\b)(Foo)(\b|_)
regEX.Replace(source, "$1" & newstring & "$3")
これは機能しますが、少しうっすらそうです。
BIG感謝を。私は正規表現について学ぶことが大変です。私は小さな変更を加える必要がありましたが、それはトリックを行ったようです。単純に\ bFoo \ b –
まあ、それは完全ではありませんでした。私は上記の私の元の投稿を修正しました。コメントは大歓迎です。 –
アンダースコアは "単語文字"と見なされるので、\ bは文字とアンダースコアの間で一致しません。しかし、それをやる方法はあります。 – Bohemian