正規表現の\\fについてNo.08311
tyyyu2005 さん 16/08/30 13:34
 

変換前
abcde12345efghi

変換後
abcde:12345;efghi

replaceallfast "[a-z]+\\f[0-9]+\\f[a-z]+", "\\0:\\1;\\2", regular;

お疲れ様です。
正規表現の\\fについて質問です。
上記の場合\\2までとなっていますが、例えばこれが\\10以上となった場合の表現は
どのようにすればよろしいでしょうか。

[ ]
RE:08311 正規表現の\\fについてNo.08312
秀まるお2 さん 16/08/30 15:54
 
 HmJre.dllの担当の僕の方からコメントさせていただきますと・・・

 「\f」を使った区切りの場合、タグとして指定できるのは

    \1 〜 \9

 までで、仮に\10や\11相当の物があっても、それを置換で指し示すことは出来
ないです。

 最新版の秀丸エディタ(に付属のHmJre.dll)だと、Perl等で一般的な新しい
方式のタグ付き正規表現をサポートしています。その方式は、例えば

 (aaaa)(bbbb)(cccc)....

 のように括弧で囲んだ記述をすると、「\1」が「aaaa」相当、「\2」が
「bbbb」相当みたいになるって仕組みになります。

 この方式を使うとしたら、例えば

    [a-z]+\f[0-9]+\f[a-z]+

 は、

    ([a-z]+)([0-9]+)([a-z]+)

 のように書く形になります。この新しい方式だと、\1〜\9の他に、

 \g{10}  〜   \g{15}

 までの、15番までのタグが指定できます。

 そっちをお勧めします。

 16以上は指定できないですけども。

[ ]
RE:08312 正規表現の\\fについてNo.08313
でるもんたいいじま さん 16/08/30 15:57
 
でるもんた・いいじまです。補足します。

>  最新版の秀丸エディタ(に付属のHmJre.dll)だと、Perl等で一般的な新しい
> 方式のタグ付き正規表現をサポートしています。
...
>  この方式を使うとしたら、例えば
>    [a-z]+\f[0-9]+\f[a-z]+
>  は、
>    ([a-z]+)([0-9]+)([a-z]+)
>  のように書く形になります。

この場合、置換先は \0:\1:\2 ではなく \1:\2:\3(最初の括弧が \1)となります。
\0と書くと、マッチした文字列全体という意味になってしまいますので
ご注意ください。

[ ]
RE:08313 正規表現の\\fについてNo.08315
tyyyu2005 さん 16/08/31 17:25
 
秀まるお2 さん、でるもんたいいじま さん 

ご返信ありがとうございます。
「\f」を使った区切りは上限があるのですね。
とても勉強になりました。

[ ]