和英混在文を校正しています。チェック対象の文章が、以下のルールに適合しているかを検証する Word 付属のワイルドカード検索か、VBE に記述する VBScript.RegExp を教えてください。
宜しくお願いします。
原則ルール
1. 半角英数・半角記号と全角文字の間には半角スペース 1 つを入れなければならない
ルールの例外
1. 全角のかぎかっこ (「」『』) などと半角英数・半角記号が隣接する際は半角スペースは不要
2. 全角の句読点 (、。) と半角英数・半角記号が隣接する際は半角スペースは不要
3. 半角かっこ (()) と、かっこの内側の全角文字との間には半角スペースは不要
MS-Word のワイルドカード検索か、VBA の VBScript.RegExp を使用した正規表現でこの問題を解決したいです。
行頭と行末 (= 改行) の存在にも注意してください。
宜しくお願いします。
※この質問文自体が、そのルールに沿って書かれていますので参考にしてください。
Wordのワイルドカードでは、大文字小文字を区別できないようでした。
VBScriptの下記パターンでやってみてください。VBScript.RegExpの知識があるという前提でソースは省略します。
私の知識では、1パスでは少し無理そうなので、2パスで行っています。
'1パス目:右側スペースのチェック pattern1="[\!-\'\)-\~]+[^ \!-\~【】「」『』、。\n]" ' \!-\'\)-\~:ascii順で(を除外した半角文字 ' : 検索処理、置換処理など '2パス目:左側スペースのチェック pattern2="[^ \!-\~【】「」『』、。\n][\!-\(\*-\~]+" ' \!-\(\*-\~:ascii順で)を除外した半角文字 ' : 検索処理、置換処理など
●備考1:全角かっこ「()」は、全角文字と全く同じ扱いにしています。角かっこと同じ扱いにしなくていいですか?
●備考2:半角スペース以外が出たときにそこまでの時点の文字とマッチさせています。マッチさせたくないときは、否定先読み「(?! \!-\~・・・)」に変更ください。
[!0-9\!-\~a-zA-Z\{\}\\ ^13\[\]\_\|]