正規表現の指定(否定後読み)の仕方について

  1. Meryは大変使いやすく愛用させていただいています。
    ありがとうございます。

    当方、プログラミングは、キチット学んだことも無く、
    既に後期高齢者でもあり、下記がよく分かりません
    お教え頂ければと思います。

    マクロの作成で正規表現を使うに当たり、
    Meryでは、下記は
    どのように設定すれば良いのでしょうか?
    お教えください。

    手持ちの書籍では、
    肯定先読みは、(?=□□□)
    否定先読みは、(?!□□□) と指定するとありますが、
    否定後読みの記述がなく
    グループ化のみを行い、キャプチャを行わない指定の、
    (?:□□□) を用いても上手く行きません。

    具体的に処理したいことは、
    直前の文字列が「全角」か、「半角」かにより
    後続する文字列(記号)を「全角」、または「半角」に変換したいのです。

    「replace文」「replace(//gm, "").)}]);」の例で
    お教え頂ければと思います

    なお、PCの使用環境は現在は下記の通りですが
    1年内にWindows11 に買い替えたいと考えています。

    Mery: 3.7.9 (x64)
    OS: Windows 10 (Version 22H2, OS Build 19045.5440, 64-bit Edition)

     |  konnchan  |  返信
  2. ご愛用いただきありがとうございます。

    正規表現については、私もそこまで詳しくないので、先読みや後読みの書き方まではちょっと分かりません。

    でも、検索のヒントになりそうな情報として、Mery のマクロで使われる正規表現の仕様について簡単にご説明しますね。

    Mery のマクロは、たぶん JavaScript で書かれているかと思います。

    たとえば、replace(//gm, "")みたいな書き方をしている場合、これは JavaScript の機能なので、Mery 独自の正規表現ではなく、JavaScript の正規表現ルールに従います。

    なので、「JavaScript 正規表現」みたいなキーワードで検索すると、ヒントが見つかるかもしれません。

    一方で、Mery のdocument.selection.Replaceを使う場合は、鬼車 (鬼雲) という正規表現エンジンを利用するかたちになります。

    この場合は、以下の鬼車のドキュメントを参考にしてみてください。

    【参考】鬼車 正規表現
    https://github.com/kkos/oniguruma/blob/master/doc/RE.ja

    正規表現の細かい書き方については私も詳しくないのですが、ほかのユーザーさんの中には詳しい方もいらっしゃると思うので、回答がつくのを少し待ってみるのもいいかもしれません。

     |  Kuro  |  返信
  3. > ご愛用いただきありがとうございます。
    >
    > 正規表現については、私もそこまで詳しくないので、先読みや後読みの書き方まではちょっと分かりません。
    >
    > でも、検索のヒントになりそうな情報として、Mery のマクロで使われる正規表現の仕様について簡単にご説明しますね。
    >
    > Mery のマクロは、たぶん JavaScript で書かれているかと思います。
    >
    > たとえば、`replace(//gm, "")`みたいな書き方をしている場合、これは JavaScript の機能なので、Mery 独自の正規表現ではなく、JavaScript の正規表現ルールに従います。
    >
    > なので、「JavaScript 正規表現」みたいなキーワードで検索すると、ヒントが見つかるかもしれません。
    >
    > 一方で、Mery の`document.selection.Replace`を使う場合は、鬼車 (鬼雲) という正規表現エンジンを利用するかたちになります。
    >
    > この場合は、以下の鬼車のドキュメントを参考にしてみてください。
    >
    > 【参考】鬼車 正規表現
    > https://github.com/kkos/oniguruma/blob/master/doc/RE.ja
    >
    > 正規表現の細かい書き方については私も詳しくないのですが、ほかのユーザーさんの中には詳しい方もいらっしゃると思うので、回答がつくのを少し待ってみるのもいいかもしれません。
    //
    一緒に考えていただきありがとうございます!
    ご紹介いただきましたことも含め
    少し考えてみます。

    幸い、時間だけはたっぷりありますので…!

    上手い方法が分からない時は
    スマートではありませんが
    条件に当てはまる
    (直前の文字が全角の時は)
    後続の記号を1つずつ全角文字で置換するようにします。
    ありがとうございました!

     |  konnchan  |  返信
  4. ご返信ありがとうございます。

    > 条件に当てはまる
    > (直前の文字が全角の時は)
    > 後続の記号を1つずつ全角文字で置換するようにします。

    それはなかなか大変そうですね。

    全角と半角にもいろいろなパターンがあるので、一筋縄ではいかないですね。もし英数字だけなら、なんとかなりそうな気もしますが…。

    ただ、半角カナや全角記号も対象に含まれるとなると、正規表現だけで変換するのは難しいかもしれません。

    どんな文章を置換したいのか、サンプルテキストや具体的な例をいただけると、正規表現に限らず、マクロのアイデアや他の変換ツールの提案もできるかもしれませんし、ほかのユーザーさんからもアドバイスをもらいやすくなるかもしれません ^^

     |  Kuro  |  返信
スポンサーリンク