空白文字の正規表現No.17050
成松 さん 04/04/13 22:22
 
秀丸の強調表示機能において、[\s]*の空白文字(下記)に
正規表現でマッチさせたいとき、

文字列:「hoge foo」
正規表現1:「hoge[\s]*foo」→マッチせず。

ただし、\sを(半角スペース文字)に置き換えるマッチします。
正規表現2:「hoge[ ]*foo」→マッチする。

なぜ"正規表現1"の方だとマッチしないのでしょうか?
なお、「大文字/小文字の区別」と「正規表現」に
チェックを入れています。

使い方が間違っていたらすみません。
アドバイスよろしくお願いします。

※また、「[\w\W]*」の場合もうまくマッチしない気がします。

[ ]
RE:17050 空白文字の正規表現No.17051
成松 さん 04/04/13 22:24
 
バージョンを書き忘れました。

秀丸:Ver.4.10 β26
OS:Windows2000

です。

>秀丸の強調表示機能において、[\s]*の空白文字(下記)に
>正規表現でマッチさせたいとき、
>
>文字列:「hoge foo」
>正規表現1:「hoge[\s]*foo」→マッチせず。
>
>ただし、\sを(半角スペース文字)に置き換えるマッチします。
>正規表現2:「hoge[ ]*foo」→マッチする。
>
>なぜ"正規表現1"の方だとマッチしないのでしょうか?
>なお、「大文字/小文字の区別」と「正規表現」に
>チェックを入れています。
>
>使い方が間違っていたらすみません。
>アドバイスよろしくお願いします。
>
>※また、「[\w\W]*」の場合もうまくマッチしない気がします。

[ ]
RE:17050 空白文字の正規表現No.17052
アルビレオ さん 04/04/13 22:47
 
秀丸ユーザーのアルビレオです。

\s や \W は秀丸の正規表現ではサポートされていないし、 \w の意味もPerlな
どとは違います。
このあたりの特殊文字の扱いは正規表現ルーチンごとにいろいろと違うので、秀
丸の正規表現だけが特殊というわけではありません。

秀丸で使える特殊文字はヘルプの[検索系コマンド]-[検索]-[正規表現]-[エス
ケープシーケンス]で確認できます。
(ヘルプのキーワード検索で「エスケープシーケンス」を探した方が早い?)

秀丸でPerlに近い正規表現を使用可能にする方法として、BREGEXP.DLLとBRegIf.
DLLを使うこともできます。
http://hide.maruo.co.jp/lib/macro/bregif5.html

[ ]
RE:17051 空白文字の正規表現No.17053
秀まるお2 さん 04/04/13 22:58
 
 秀丸での正規表現では、「\W」とか「\s」とかは使えないです。これはどうし
てかと言われると、元々のJRE32.DLLがそういう表記をサポートしてなかったか
らということになります。

 元々この辺のエスケープシーケンスは、「正規表現ならこうだ」と決まってる
訳でもないらしいので、そういう方言ということで勘弁して欲しいです。

[ ]
RE:17050 空白文字の正規表現No.17054
Arimac さん 04/04/14 09:25
 
そもそも、本来はキャラクタークラス[]の中では\記号による
エスケープシーケンスは機能しません。
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/regex.7.html
秀丸エディタでは使えたりしますが・・・

[ ]
RE:17054 空白文字の正規表現No.17069
成松 さん 04/04/14 19:34
 
>そもそも、本来はキャラクタークラス[]の中では\記号による
>エスケープシーケンスは機能しません。
>http://www.linux.or.jp/JM/html/LDP_man-pages/man7/regex.7.html
>秀丸エディタでは使えたりしますが・・・

なるほど!
そもそも使えなかったんですね。
アドバイスありがとうございます。

[ ]
RE:17052 空白文字の正規表現No.17070
成松 さん 04/04/14 19:38
 
丁寧なアドバイスありがとうございます。
ご指摘のとおり、私はこれまで、正規表現=perl でした。
納得しました。
ヘルプで(ごく短い時間)正規表現の仕様を探したのですが、
見つけられなくて。。。
ありがとうございます。

DLLの情報もありがとうございます。
「\W」や「\s」がどうしても使いたいので、試してみます。

成松

>秀丸ユーザーのアルビレオです。
>
>\s や \W は秀丸の正規表現ではサポートされていないし、 \w の意味もPerlな
>どとは違います。
>このあたりの特殊文字の扱いは正規表現ルーチンごとにいろいろと違うので、秀
>丸の正規表現だけが特殊というわけではありません。
>
>秀丸で使える特殊文字はヘルプの[検索系コマンド]-[検索]-[正規表現]-[エス
>ケープシーケンス]で確認できます。
>(ヘルプのキーワード検索で「エスケープシーケンス」を探した方が早い?)
>
>秀丸でPerlに近い正規表現を使用可能にする方法として、BREGEXP.DLLとBRegIf.
>DLLを使うこともできます。
>http://hide.maruo.co.jp/lib/macro/bregif5.html

[ ]