[英]Javascript regex for extracting spreadsheet ID and sheet ID from google sheets URL
[英]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.