如何简化这个谷歌表正则序列?



我想在我的google电子表格中进行以下转换:

  • 6视图->6
  • 73K视图->73000
  • 3650→3650
  • 163K视图->163000
  • 1.2K视图->1200
  • 52.5 k→52500

所有数据都在一列中,根据情况,我需要应用特定的转换。我试图把所有的正则表达式在一个公式,但我失败了。我总是有两个正则表达式的情况。

无论如何,我最终在不同的列中一个case一个case地制作这些正则表达式。它工作得很好,但我觉得它可能会减慢工作表,因为我需要大量的数据进入这个工作表。

表格如下:

谢谢你的帮助!

使用regexreplace(),像这样:

=arrayformula( 
iferror( 1 / 
value( 
regexreplace( 
regexreplace(trim(A2:A), "s*K", "e3"), 
" views", "" 
) 
) 
^ -1 ) 
)

查看示例电子表格。

使用regex:/(?<=(d*.?d+K?)) views/gi替换'views'要将'K'替换为十进制值或不替换为十进制值,首先检测K,然后将K替换为空字符串并乘以1000。

使用回调函数

txt.replace(/(?<=(d*.?d+K?)) views/gi, '').replace(/(?<=d).?d+K/g, x => x.replace(/K/gi, '')*1000)

代码:

arr = [`6 views`,
`73K views`,
`3650`,
`163K views`,
`1.2K views`,
`52.5K`];

arr.forEach(txt => {
console.log(txt.replace(/(?<=(d*.?d+K?)) views/gi, '').replace(/(?<=d).?d+K/g, x => x.replace(/K/gi, '')*1000))
})

输出:

6
73000
3650
163000
1200
52500

假设您的输入在a列中。允许空单元格。在其他列中

=arrayformula(if(A2:A<>"",value(substitute(substitute(A2:A," views",""),"K","e3")),))

根据需要调整范围A2:A

还要注意带有空字符串的非空单元格将被忽略。


基本上,由于Google Sheet的regex引擎不支持环顾四周,因此在应用程序中利用相当严格的模式并使用substitute()会更有效。

相关内容

  • 没有找到相关文章

最新更新