RegExクラスのバグ?

  1. 3 years ago
    Edited 3 years ago

    RegExクラスでの検索置換が期待した結果になりません。バグでしょうか?

    // 「^」にゼロ幅マッチした箇所を「あ」に全置換するコード
      Dim re As New RegEx
      re.Options.MatchEmpty = True
      re.Options.StringBeginIsLineBegin = True
      re.Options.ReplaceAllMatches = True
      
      re.SearchPattern = "^"
      re.ReplacementPattern = "あ"
      
      TextArea1.Text = re.Replace( TextArea1.Text )

    TextArea1.Textが以下の場合、

    abcd
    abcd
    abcd

    上記コードを実行すると下記になることを期待しています。
    Perlで s/^/あ/mg を実行するのと同じ結果になってほしいわけです。

    あabcd
    あabcd
    あabcd

    ところがまったく変わりません。
    RegExOptions.MatchEmpty が正常にはたらいていない気がするのですが、どうでしょう?
    それとも私の思い違いでしょうか?

  2. Edited 3 years ago

    「^」「$」「\b」のゼロ幅マッチを全置換した結果がいずれも異常です。

    -image-

    サンプルのプロジェクトファイルをUPしておきます(2014r3)。
    RegExTest.xojo_binary_project

    実は、MBS Xojo (Real Studio) Pluginに「RegExMBSクラス」が追加された当初も同様のバグがあり、
    私が報告して直してもらった経緯があります。PCREを組み込むときの落とし穴なのかも?

or Sign Up to reply!