LANG SELRCT

コードを書く場所

2019年12月8日日曜日

複数のつながった英語の文章を単文に分けたい(正規表現)


こういうことがやりたくて書いたコード



左のテキストエリアに以下のようなテキストを貼り付けると
右のテキストエリアに一文ずつ改行して表示される。

Practice makes the impossible possible. Strike while the iron is hot.

Nothing comes of nothing.


デモ
https://script.google.com/macros/s/AKfycbxxqRidOTAUssCiWZBr-SxBriaB80i2MkLWEECL87ZtlsPVVRun/exec


今回書いた正規表現
var pattern = /.*?(?=[.!?] ).|[^。!?\n]*.|.*$/g;



コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("index");
}
意訳
この機能がやること
指定したHTMLファイルを表示する




index.html
<!DOCTYPE html>
<html>
  <head>
    <style>
      textarea {
        width: 40vw;
        height: 80vh;
      }
    </style>
  </head>
  <body>
    <textarea id="ta"></textarea>
    <textarea id="ta2"></textarea>
    <script>
      elem("ta").onkeyup = taKeyup;
      
      function elem(id) {
        return document.getElementById(id);
      }
      
      function taKeyup() {
        var taStr = elem("ta").value;
        var singleSenteceArray = splitToSingleSentece(taStr);
        console.log(singleSenteceArray);
        elem("ta2").value = singleSenteceArray
      }
      
      function splitToSingleSentece(str) {
        var pattern = /.*?(?=[.!?] ).|[^。!?\n]*.|.*$/g;
        var sentences = str.match(pattern);
        var singleSentences = '';
        for(var i = 0; i < sentences.length; i++) {
          var sentence = sentences[i].trim();
          singleSentences += sentence + '\n';
        }
        return singleSentences
      }
    </script>
  </body>
</html>




備忘録

試しながら書いた正規表現

最初はこんな感じのを書いて、試しながらやってみた(これだと全然だめ)
var pattern = /.*\. *?.|.*\! *?.|.*\。*?.|.*\! *?.|.*/g;


.!?以外でいけそうな気がしたけれど、
3.14などの小数点やA.M.などのピリオドでも改行してしまう
var pattern = /[^.!?]*./g;


最新の投稿

JIRAにステータスを追加したい

JIRAにステータスを追加したときの備忘録です。 新規ステータスを作成する ワークフローでステータスを追加する ボードにステータスを配置する 1. 新規ステータスを作成する Jira settingsを開きます Issuesを選択します ...