[ 新規に投稿する ]

単語末尾の「O」(大文字のオー)、「0」(数字のゼロ)、「Q」(大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」(大文字のオー)、「0」(数字のゼロ)、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」(大文字のオー)、「0」(数字のゼロ)、No.09230
kukekko さん 20/06/19 20:06 [ コメントを投稿する ]
本当にありがとうございます。

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

[ 新規に投稿する ]