Javascript Google应用程序脚本regex body.findText(searchPattern)如果有新行,则返回null

Javascript Google应用程序脚本regex body.findText(searchPattern)如果有新行,则返回null,javascript,regex,google-apps-script,Javascript,Regex,Google Apps Script,以下是谷歌文档内容: Some text, more text... <li> some lines more lines... </li> And more text 到目前为止,它返回null。我的正则表达式只查找..,但不查找新行,尽管我正在使用建议的(?s)标记以确保包含任何字符和新行: (?)s(.*? 我的正则表达式在和中工作,所以我不明白它在谷歌应用程序脚本中不工作。 您想在Google文档中检索..的文本 您希望使用谷歌应用程序脚本实现这一点 如果

以下是谷歌文档内容:

Some text, more text...

<li>
some lines
more lines...
</li>

And more text
到目前为止,它返回
null
。我的正则表达式只查找
  • ..
  • ,但不查找新行,尽管我正在使用建议的
    (?s)
    标记以确保
    包含任何字符和新行:

    (?)s
  • (.*?
  • 我的正则表达式在和中工作,所以我不明白它在谷歌应用程序脚本中不工作。

    • 您想在Google文档中检索
      ..
    • 的文本
    • 您希望使用谷歌应用程序脚本实现这一点
    如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

    问题和解决方法: 在您的情况下,如果要使用
  • [\s\s]*?
  • ,请修改为
  • [\\s\\s]*?
  • 。在您的例子中,
    ..
    有几个段落。(根据您的示例值,我是这样想的。)这样,当
    const searchPattern='
  • [\\s\\s]*?“
  • 的模式用于
    body.findText(searchPattern)
    时,将返回
    null
    。如果将
    ..
    作为一个段落,则
    body.findText(searchPattern)
    返回
    ..

    要搜索包含多个段落的
    ..
    ,以下解决方法如何?此解决方案的流程如下所示

    流量:
  • 使用
    • 您想在Google文档中检索
      ..
    的文本
  • 您希望使用谷歌应用程序脚本实现这一点
  • 如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

    问题和解决方法: 在您的情况下,如果要使用
  • [\s\s]*?
  • ,请修改为
  • [\\s\\s]*?
  • 。在您的例子中,
    ..
    有几个段落。(根据您的示例值,我是这样想的。)这样,当
    const searchPattern='
  • [\\s\\s]*?“
  • 的模式用于
    body.findText(searchPattern)
    时,将返回
    null
    。如果将
    ..
    作为一个段落,则
    body.findText(searchPattern)
    返回
    ..

    要搜索包含多个段落的
    ..
    ,以下解决方法如何?此解决方案的流程如下所示

    流量:
  • Use
    Regex非常适合这样的任务。你应该使用javascript的DOMParser。是的,我知道你是对的。我想我只能在一个有效的html文件中使用DOMParser,因为我的Google文档的内容将是一些代码片段和普通文本的混合体?它不需要特别是有效的html,只需要格式良好的XML。因此,只要有一个根元素,并且嵌套的内容遵循正确的XML语法,就可以了。你应该使用javascript的DOMParser。是的,我知道你是对的。我想我只能在一个有效的html文件中使用DOMParser,因为我的Google文档的内容将是一些代码片段和普通文本的混合体?它不需要特别是有效的html,只需要格式良好的XML。因此,只要有一个根元素,并且嵌套的内容遵循正确的XML语法,就可以了。我当然会使用其中的一部分,但我简化了对问题的描述,只关注一个问题:当
  • ..
  • 有任何字符时,包括新行,匹配
    ..
    。您建议的正则表达式被Google应用程序脚本视为无效。知道吗?我可能运气不好:@Greg Forel谢谢你的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我无法理解您当前发布的
    您建议的正则表达式被Google应用程序脚本视为无效。
    。因为在我的测试中,示例值可以与示例脚本一起使用。那么你能解释一下它的详细信息吗?我想考虑一下。对不起,你的正则表达式行得通。我用错了。这有助于解决我的问题,再次感谢@Greg Forel感谢您的回复。我很高兴你的问题解决了。如果您的问题已解决,请按“接受”按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为你的问题和解决方案对他们会有帮助。如果你找不到按钮,尽管告诉我。嗨,塔奈克,非常感谢你的回答。我当然会使用其中的一部分,但我简化了对问题的描述,只关注一个问题:当
  • ..
  • 有任何字符时,包括新行,匹配
    ..
    。您建议的正则表达式被Google应用程序脚本视为无效。知道吗?我可能运气不好:@Greg Forel谢谢你的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我无法理解您当前发布的
    您建议的正则表达式被Google应用程序脚本视为无效。
    。因为在我的测试中,示例值可以与示例脚本一起使用。那么你能解释一下它的详细信息吗?我想考虑一下。对不起,你的正则表达式行得通。我用错了。这有助于解决我的问题,再次感谢@Greg Forel感谢您的回复。我很高兴你的问题解决了。如果您的问题已解决,请按“接受”按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为你的问题和解决方案对他们会有帮助。如果你找不到按钮,尽管告诉我。
    <li>
    ...
    </li>
    
    function parseLists(body) {
      // var doc = DocumentApp.getActiveDocument();
      // var body = doc.getBody();
    
      var pattern1 = "<li sheet=";
      var pattern2 = "<\/li>";
      var range1 = body.findText(pattern1);
      var res = [];
      while (range1) {
        var temp = {};
        var p1 = range1.getElement().getParent();
        temp.startIndex = body.getChildIndex(p1);
        var range2;
        if (p1) {
          range2 = body.findText(pattern2, range1);
          var p2 = range2.getElement().getParent();
          temp.endIndex = body.getChildIndex(p2) + 1;
          var texts = "";
    //      for (var i = temp.startIndex + 1; i < temp.endIndex - 1; i++) {
          for (var i = temp.startIndex; i < temp.endIndex; i++) {
            texts += body.getChild(i).asParagraph().getText();
          }
          temp.texts = texts;
          res.push(temp);
        }
        range1 = body.findText(pattern1, range2);
      }
      Logger.log(res)
    }
    
    [
      {
        "startIndex": 0,
        "endIndex": 5,
        "texts": "<li sheet=\"experiences\">{{company_name}},  {{job_location}} — {{job_title}}MONTH {{from}} - {{to}}{{description}}</li>"
      },
      {
        "startIndex": 6,
        "endIndex": 9,
        "texts": "<li sheet=\"other\">{{test}}</li>"
      }
    ]
    
    for (var i = temp.startIndex; i < temp.endIndex; i++) {
    
    for (var i = temp.startIndex + 1; i < temp.endIndex - 1; i++) {