単語末尾の「O」(大文字のオー)、「0」(数No.09228
kukekko さん 20/06/19 11:41
 
OCRでの変換ミスで、空カッコ「()」が、「O」(大文字のオー)、「0」(数字のゼロ)、
「Q」(大文字のキュー)に誤って変換されてしまいます。
この間違いを連続置換マクロで修正したいと考えています。

変換対象の文字列の例は、、

ComboBox O;
ComboBox O ;
ComboBoxO ;

これらを、ComboBox(); に、

ComboBox O
ComboBoxO

これらを、ComboBox() に、

そして、以下のように変換対象の文字を先頭に持つ単語が続く場合は、変換したくあ
りません。

ComboBox Over

以下のように、正規表現パターンを考えたのですが、

検索文字列 : ComboBox\s*[O0Q]\s*(;?)

置換文字列 : ComboBox()\1\2

このパターンでは、最後の、ComboBoxに続いて、「O」(大文字のオー)、「0」(数字
のゼロ)、「Q」(大文字のキュー)を最初の文字として持つ単語が続く場合に、変換
されてしまいます。

変換対象の文字を先頭に持つ単語が続く場合に変換しない正規表現パターンを教えて
いただけないでしょうか?

[ ]
RE:09228 単語末尾の「O」(大文字のオー)No.09229
秀丸担当 さん 20/06/19 17:27
 

Oに続いて、単語の終わり「\>」や単語の境界「\y」を書く方法がありますが、数字
の違いがあったりします。
自由にするには後方不一致「(?!xxx)」がいいかもしれません。
例えば、O(?![a-z])とかO(?!\c)とか続いてほしくない文字を任意にできます。

\sは改行を含んでしまうので、[ \t]のほうがいいかもしれません。
以下のような感じでどうでしょうか。
検索文字列 : ComboBox\s*[O0Q](?!\c)[ \t]*(;?)
置換文字列 : ComboBox()\1

[ ]
RE:09229 単語末尾の「O」(大文字のオー)No.09230
kukekko さん 20/06/19 20:06
 
本当にありがとうございます。

意図したとおりに動作しました。
後方不一致は、不勉強で把握していませんでした。教えていただいて本当に、ありが
とうございます。助かりました。

[ ]