如何使用findText不区分大小写?

时间:2019-01-15 21:30:56

标签: regex google-apps-script google-docs re2

我尝试在Google文档中搜索字符串。默认情况下,findText区分大小写。如何使用不区分大小写的代码。

参考文献中写道:“使用正则表达式在元素的内容中搜索指定的文本模式。”

这就是我尝试过的:

function search(string) {
  var pattern = new RegExp(string, "gi");
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var rangeElement = body.findText(pattern);
  while (rangeElement) {
    var offset =rangeElement.getStartOffset();
    var text = rangeElement.getElement().asText().getText();
    html += text;
  } 
}

但是找不到任何东西。我也尝试过:

body.findText(pattern(string));body.findText(/string/\i);

我还能尝试其他什么吗?

2 个答案:

答案 0 :(得分:1)

我们可以在官方reference中阅读

  

JavaScript正则表达式功能的一部分不完全   支持,例如捕获组和模式修改器。

此外,请注意使用findText()的模式参数:它必须是字符串,而不是RegExp对象。

答案 1 :(得分:1)

问题:

  • 将正则表达式“对象”而不是“字符串”发送到findText()
  • 不区分大小写的语法不正确。

解决方案:

  • 使用正确的re2语法
  • 将正则表达式作为字符串发送。这意味着特殊字符\s是两次转义的\\s

    findText('(?i)Apple') //matches APPLE or AppLe 
    

阅读: