簡體   English   中英

從 Javascript 到谷歌表的正則表達式

[英]regex from Javascript to google sheets

我正在嘗試將此正則表達式添加到 Google 表格中。 在 JavaScript 中換行

在解決方案中

const wrap = (s) => s.replace(
    /(?![^\n]{1,32}$)([^\n]{1,32})\s/g, '$1\n'
);

我正在嘗試用本機REGEXREPLACE替換此 function 以使其運行得更快。 我嘗試了一些組合,但都給了我Function REGEXREPLACE parameter 2 value " /(?,[^\n]{1,32}$)([^\n]{1.32})\s/g" is not a valid regular expression. =REGEXREPLACE(AP18," /(?,[^\n]{1,32}$)([^\n]{1,32})\s/g","$1\n")錯誤。

我也試過: =REGEXREPLACE(AP18,"(?,[^\n]{1,32}$)([^\n]{1,32})\s","$1\n")

相同的結果

我不能把它移到原生谷歌 function 嗎? 還是我的正則表達式有問題?

在替換部分中使用帶有換行符的REGEXREPLACE時,您必須使用一種古怪的解決方法: "\n"換行符不起作用,因此您必須輸入文字換行符:

=REGEXREPLACE(D$7,"([^\n]{32}[^\s]{1,32})","$1
")

為此,請將 cursor 放在替換部件的正確位置,然后按 CTRL+ENTER。

請注意,我不使用前瞻。 這是因為內置函數僅支持 RE2 正則表達式語法,而不支持 V8 JavaScript 引擎的完整語法。

或者,在 Extension => Apps Script 下創建自定義 function。 這里有兩種變體:

function WRAP1(str) {
  return str.replace(/(?![^\n]{1,32}$)([^\n]{1,32})\s/g, '$1\n');
}

function WRAP2(str) {
  return str.replace(/([^\n]{32}[^\s]{1,16})/g, '$1\n');
}

我更喜歡后者,因為它包含了一個 superSuperSuperSuperSuperSuperSuperSuperSuperSuperSuperSuperLongWordToo。

Google 表格regex函數使用的 RE2 正則表達式引擎有意省略了前瞻和后瞻 這意味着regexreplace()不支持(?....)斷言。

通常可以編寫不使用這些功能的替代正則表達式。 一個完整的解決方案可能涉及幾個嵌套的正則表達式函數。

要了解 Google 表格中正則表達式函數使用的確切正則表達式語法,請參閱RE2

請注意, query()電子表格 function 使用Perl 兼容正則表達式支持前瞻和后瞻。 另請注意,Google Apps 腳本也使用支持這些斷言的JavaScript 正則表達式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM