#### 無欲の正規表現について (2019-05-13 13:49 by miso #82985)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident
, sunt in culpa qui officia deserunt mollit anim id est laborum.
という文字列があって
^.*?e
でマッチさせると1行目の場合Loreまでがマッチされます。
ところが置換をさせると
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
が置換対象になります。

これは既知の問題でしょうか？

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

#### Re: 無欲の正規表現について (2019-05-15 00:49 by berryzplus #82991)

> 例えば
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
> et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
> nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
> esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident
> , sunt in culpa qui officia deserunt mollit anim id est laborum.
> という文字列があって
> ^.*?e
> でマッチさせると1行目の場合Loreまでがマッチされます。
> ところが置換をさせると
> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
> が置換対象になります。
>
> これは既知の問題でしょうか？

s/^.*?e/_/g

_m ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
_t dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
_x ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
_sse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident
_serunt mollit anim id est laborum.

テストしたバージョン
サクラエディタ v2.4.0.1558 32bit dev
(GitURL https://github.com/sakura-editor/sakura.git)
bregonig.dll Ver.4.12 with onigumo 6.1.2

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

#### Re: 無欲の正規表現について (2019-05-16 02:53 by AC #83002)

「「すべて置換」は置換の繰返し」のチェックを入れて空文字列に置換するとそうなりますが、その場合は想定通りの結果です。いかがでしょうか。

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

#### Re: 無欲の正規表現について (2019-05-17 09:04 by miso #83006)

メッセージ #83002 への返信
> 「「すべて置換」は置換の繰返し」のチェックを入れて空文字列に置換するとそうなりますが、その場合は想定通りの結果です。いかがでしょうか。

おっしゃる通りでした。
「「すべて置換」は置換の繰返し」のチェックを外して置換すると狙った結果が出力されました。

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

#### Re: 無欲の正規表現について (2019-05-17 16:07 by AC #83010)

「すべて置換」は置換の繰返しがオフの場合を先に説明しますと、これは行全体のマッチを一度に検索して、一度に置換します。それに対して「すべて置換」は置換の繰返しがオンの場合は、文字通り「１つ検索」「１つ置換」を繰り返すことで行全体、ドキュメント全体を処理します。

もうおわかりかと思いますが、１つ目の置換が終わった後の２回目の検索でも ^ が文字列の先頭にマッチすることで、もともとは行頭でなかった部分までが置換の対象になっていました。