#20680
MTJ-K
参加者

こんにちは、開発お疲れ様です。
今回の事象ですが、regex++の仕様だったんですね。
自分もregex++を試してみたのですが、確かに同じような動きになりました。

具体的な例ですが、以下1行の文章を正規表現「(?<!\d)\d+」で検索した例です。

123 456_789a0123

[次を検索]で「123」「456」「789」「0123」と順にマッチするのを想定しましたが、
実際には「123」「23」「3」「456」「56」「6」…となりました。
また、文末から[前を検索]を実行した場合も
「0123」「789」「456」「123」と順にマッチするのを想定しましたが、
実際には「0123」「012」「01」「0」「9」「78」「7」…となりました。

問題点ですが、この事象はこちらでのやりとりで気づいたのですが、
そういった制限があることを知らなかった為、
正規表現が誤っているのかと必要以上に試行錯誤してしまいました。

今回の「(?<!\d)\d+」の場合、「(^|(?<=[^\d]))[\d]+($|(?=[^\d]))」で同様の結果になりましたが、
ちょっと冗長になってしまったように思います。

regex++の仕様とのことでしたので、利用できない条件など
ヘルプに記載があれば不必要に悩まずに済むと思います。

以上、どうぞよろしくお願いいたします。