特定記号を含まない条件(複数)No.08155
Lizu さん 16/08/03 12:43
 
下記は・を含まない行のみ改行するマクロです。
replaceall "^((?!・).*?)+\n" , "\\1\n\n" ,regular;





このような場合は改行しない

しかし・以外にも改行したなくない記号等が複数ございます。

@
A
B

1)
2)
3)
等バリエーションも豊富です。

後から変数に代入する形でマクロを組みたいと考えております。
教えていただけますと助かります。

[ ]
RE:08155 特定記号を含まない条件(複数)No.08156
でるもんたいいじま さん 16/08/03 15:01
 
秀丸ユーザで、正規表現は初級卒業程度の「でるもんた・いいじま」です。

> 下記は・を含まない行のみ改行するマクロです。
> replaceall "^((?!・).*?)+\n" , "\\1\n\n" ,regular;
>
> ・
> ↑
> このような場合は改行しない
>
> しかし・以外にも改行したなくない記号等が複数ございます。
> @

> 1)
> 後から変数に代入する形でマクロを組みたいと考えております。

確認したいのですが、「含まない」の定義は「行頭に含まない」でしょうか。
「行内にも一切含まない」でしょうか。前者なら (...*?)+\n ではなく単に
(...*)\n でいいように思いますし、後者なら .*? が「・」等にもマッチ
してしまうので replaceall 一発ではうまくいかないように思います。
#それとも私、何か勘違いしていますでしょうか?

前者だとしたら、こんな感じでどうでしょう。
replaceall "^((?![・@-S]|\\d+\\)).*)\n", "\\1\n\n", regular;
(?!...) の中に [...] とか a|b|c とかを入れるわけです。
#マル21以降はCP932外の文字なので、ここではSまでを指定しています。

マクロ的には、[...] の中に入れる文字(単一の文字がキーになる場合)と
...|... で区切る場合(2文字以上で一つのキーを構成する場合)とに分けて
文字列変数に蓄えていき、最後に統合することになるんでしょうかね。
(秀丸にはjoin関数がないので少しだけ手間がかかりますが。)

[ ]
RE:08156 特定記号を含まない条件(複数)No.08159
Lizu01 さん 16/08/03 18:04
 
>秀丸ユーザで、正規表現は初級卒業程度の「でるもんた・いいじま」です。
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>(秀丸にはjoin関数がないので少しだけ手間がかかりますが。)

大変失礼致しました。
行頭に含まないという条件です。行内に含むのはアリです。
ありがとうございます。
動作確認致しました。とても勉強になりました。






[ ]
RE:08155 特定記号を含まない条件(複数)No.08161
秀まるお2 さん 16/08/03 18:23
 
 特定の文字列を含まない検索をする一般的なやり方は、例えば「あいう」を含
まない行全体にヒットさせるなら、

    ^(?!.*あいう).*$


 みたいな書き方がお勧めです。

 「あいう」を含む方にヒットさせるなら、

    ^(?=.*あいう).*$

 になります。

[ ]