

下記のスクリプトが意図した通りに作動しません。  
★から始まる文を検索して、そのまま表示させてようと思っているのですがこちらができないので教えていただけますでしょうか。

例えばドキュメントでは下記のように置換したいと思っています。  
つまりタグを追加したいということです。

**置換前:**

[code]

    ★あｊｆぺうあｗ
    
[/code]

**置換後:**

[code]

    <div>あｊｆぺうあｗ</div>
    
[/code]

**現状のスクリプト:**

[code]

    function myFunction() {
      var doc = DocumentApp.getActiveDocument()
      var body = doc.getBody();
      body.replaceText("★.*", '$&');
    }
    
[/code]


CC BY-SA 4.0
2021-05-11T09:41:11.597
75781
2023-11-04T11:04:00.543
2021-05-12T01:01:34.187
3060
45237
question
正規表現 google-apps-script
GoogleドキュメントでGASを実装しているのですが正規表現の置換ができません。


`replaceText("★.*", '$&')`  
これだと`★`で始まるパターンを `$&` に置換するだけだと思いますが。


CC BY-SA 4.0
2021-05-11T10:16:51.583
75783
2021-05-11T10:16:51.583
45045
75781
answer


なるほど、GASの`String.replace()`では、置換文字列で`$&`はマッチした文字列全体に置き換わるんですね。知りませんでした。  
しかし `DocumentApp.getActiveDocument().getBody().replaceText()`にはその機能は無いようです。  
ならば、こうしてみてはどうでしょう。  
何か別の問題が出てくるかもですが。

[code]

    function myFunction() {
      var doc = DocumentApp.getActiveDocument();
      var bodyText = doc.getBody().getText();
      var replacedText = bodyText.replace(/(★\S*)/g, "<div>$&</div>");
      doc.getBody().setText(replacedText);
    }
    
[/code]


CC BY-SA 4.0
2021-05-11T14:54:36.320
75788
2021-05-11T14:54:36.320
45045
75781
answer


以下を参考にグループ化というもので実現してみました。

<https://www.acrovision.jp/service/gas/?p=602>

[code]

    function myFunction() {
      var char = "★あｊｆぺうあｗ";
      str = char.replace(/★(.*)/, "<div>$1</div>");
      console.log(str);
    }
    
[/code]


CC BY-SA 4.0
2023-04-05T06:23:02.810
94424
2023-04-05T06:23:02.810
40856
75781
answer