←前へ 次へ→ 秀丸Q&A集準備室へ戻る

<第7版リリース後原稿>

[HME0100A]

●Ver4.00の新機能:記号文字を使った正規表現が動作しなくなった?

Q. 秀丸 Version 4.00以降で、正規表現中に'^'や'$'、'{'等の記号文字を使用した検索・置換やマクロがうまく動作しなくなりました。
Version 3.xxまでは、正常動作していたはずですが?。

A. 秀丸 Version 4.00以降では、正規表現の機能拡張やバグ修正のため、使用するDLLとしてHMJRE.DLLが作成されました。

その機能拡張によって、以下の文字が、Version 4.00以降から正規表現の文法に使用されるようになった、あるいは使用方法が拡張されました。

{},(?!<=
特に、'{', '}' ','の3文字は、Version 3.xまでの正規表現では使用されていなかったため、注意が必要です。

これらの機能拡張の詳細は、HMJRE.HLPを参照ください。
(秀丸エディタヘルプからは、「目次」−「検索系コマンド」−「検索」−「正規表現」 から参照できます。)

これら文字を、正規表現の文法による指示としてではなく、単なる文字列として使用したい場合は、\文字でエスケープする必要があります。

また、秀丸 Version 3.xxまで(で使用されていたJRE32.DLL)では、正規表現で行頭・行末を示す'^'、'$'の文字は、それぞれ正規表現文字列の最初または最後でのみ正規表現文字列として有効で、それ以外では単にその文字自身にマッチしていました。(古い正規表現の規則に従っている)

秀丸 Version 4.00以降(で使用されるHMJRE.DLL)では、上記以外の場所でも使用できるようになりました。(新しい正規表現の規則に従っている)

(例) (^|[A-Z]) 行頭または半角アルファベット大文字を検索
※Version 3.xxまでは、'^'文字または半角アルファベット大文字を検索します。

逆にいえば、正規表現文字列の最初または最後以外で、単にその文字自身にマッチさせることを前提に作成していたマクロ(検索文字列)は、修正が必要です。(\でエスケープします)

(例) (\^|[A-Z]) '^'文字または半角アルファベット大文字を検索

[補足]
どうしても以前から使用されているJRE32.DLLを使用したい場合は、「その他」−「動作環境」の、「編集」−「正規表現」からDLLの変更が可能です。


←前へ 次へ→ 秀丸Q&A集準備室へ戻る