メイン
   EmEditor 本体の不具合の報告
     置換において \s が改行にマッチしない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
redakt55
投稿日時: 2012-12-20 9:14
常連
登録日: 2012-9-27
居住地:
投稿: 67
置換において \s が改行にマッチしない
編集中のテキストの置換において,[正規表現で検索する追加行数] に 1 以上の値を入れても,\s が改行にマッチしません。
[正規表現が改行文字に一致することができる] を ON にするとマッチします。
置換でなく検索の場合はマッチします。
「ファイルから置換」の場合はマッチします。

ヘルプの「[正規表現が改行文字に一致することができる] チェック ボックス」の説明によれば,\s は [正規表現で検索する追加行数] が 1 以上であればこのチェックボックスに関係なく改行にマッチする,とあり,実際の動作と合っていないように思われます。

なお,マニュアル(ヘルプ)には \s が表す空白文字が「〜など」となっていて,具体的にどれどれの文字なのかが明確に書かれていません。重要なことなので,ぜひ記載をお願いします。
※それが無理なら,せめて使っている正規表現エンジンのマニュアルページ(上記のことが正確に書かれているページ)へのリンクをお願いします。自分では見つけられませんでした。
Yutaka
投稿日時: 2012-12-20 10:57
管理人
登録日: 2006-9-17
居住地: Redmond
投稿: 3058
Re: 置換において \s が改行にマッチしない
redakt55 様

いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

[正規表現が改行文字に一致することができる] を ON にするとマッチするというのは、正しい動作ですが、置換でなく検索の場合はマッチする、というのは調べさせてください。

正規表現エンジンのマニュアルページは、

http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

に書かれています。

どうぞよろしくお願い申し上げます。


----------------
EmEditor 開発者
江村 豊
http://jp.emeditor.com/

redakt55
投稿日時: 2012-12-20 13:34
常連
登録日: 2012-9-27
居住地:
投稿: 67
Re: 置換において \s が改行にマッチしない
ヘルプの記述から,[正規表現が改行文字に一致することができる] は .(ピリオド)の意味だけを変更するのかと思っていたのですが,違うということですね?

それから,マニュアルページありがとうございました。
見てみましたが,\s は [[:spaces:]] に等価であると書かれているのみですね。
正規表現の初心者は,これが文字クラスの POSIX ブラケット表記であると分からないでしょうし,分かってもその正確な意味(どの文字が該当するのか)を調べるのはちょっと大変かと思います。
やはり EmEditor のヘルプに直接書いていただくのがありがたいですね。
Yutaka
投稿日時: 2012-12-21 6:37
管理人
登録日: 2006-9-17
居住地: Redmond
投稿: 3058
Re: 置換において \s が改行にマッチしない
redakt55 様

いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

\s が、置換でなく検索の場合はマッチする、という点について調べました。置換の場合、正規表現を使用して、複数行から置換すると、速度が著しく遅くなるため、特定の条件を満たした場合のみ複数行から置換するようにしています。以前は、正規表現に \n、\r が含まれているか、または [正規表現が改行文字に一致することができる] がチェックされている場合でしか複数行から検索していませんでした。今回、この条件を緩めて、正規表現に [、\、( が含まれているか、または [正規表現が改行文字に一致することができる] がチェックされている場合に、複数行から置換を行うように修正します。

[正規表現が改行文字に一致することができる] チェック ボックスは、本来は、 .(ピリオド)の意味だけになるはずですが、上記の問題で正しく動作していなかったと考えられます。次のバージョンからは、本来の .(ピリオド)の意味だけになるはずです。詳しくは、

http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/ref/match_flag_type.html

にある match_not_dot_newline の逆に相当します。

ヘルプには説明を追加したいと思います。

どうぞよろしくお願い申し上げます。


----------------
EmEditor 開発者
江村 豊
http://jp.emeditor.com/

redakt55
投稿日時: 2012-12-21 9:42
常連
登録日: 2012-9-27
居住地:
投稿: 67
Re: 置換において \s が改行にマッチしない
ありがとうございます。

新しい判定基準ですが,それで十分でしょうか。
置換ダイアログボックスの入力欄は改行を直接入力することができるので,素の改行の有無も判定条件に入れないといけないような気がします。

[正規表現が改行文字に一致することができる] の「正規表現」は「"."」とかに変えたほうがよさそうですね。
それと「一致することができる」は日本語としてやや変です(「一致する」は動作でなく状態を表すので)。["." が改行文字にマッチする] でどうでしょうか。
Yutaka
投稿日時: 2012-12-21 10:20
管理人
登録日: 2006-9-17
居住地: Redmond
投稿: 3058
Re: 置換において \s が改行にマッチしない
redakt55 様

いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

素の改行の有無も判定条件に追加します。

ダイアログの表記については検討いたします。以前は、「"."」になっていたのですが、現在の表記に変更した経緯がありました。

どうぞよろしくお願い申し上げます。


----------------
EmEditor 開発者
江村 豊
http://jp.emeditor.com/

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


投稿するにはまず登録を
 
English čeština Deutsch español français italiano 日本語 한국어 Русский 简体中文 繁體中文