为什么这个正则表达式不能在谷歌电子表格中工作?

时间:2012-05-04 00:18:38

标签: regex spreadsheet expression

我试图在谷歌电子表格中使用正则表达式从网址中提取。但是,电子表格会返回 #VALUE! 并出现以下错误:无效的正则表达式:无效的perl运算符:(?<

以下是我使用的正则表达式:(?<=raid_boss=)[a-zA-Z0-9_]+

示例网址将包含一个显示raid_boss=name的变量。这个正则表达式应该提取名称。它适用于我的测试程序,但不适用于谷歌电子表格。

以下是Google电子表格中单元格的确切内容:=REGEXEXTRACT( B1 ; "/(?<=raid_boss=)[-a-zA-{}-9_]+" )

非常感谢任何见解或帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

听起来像Google Docs使用的正则表达式引擎不支持lookbehind断言。它们是一种相对罕见的特征。

但是如果使用捕获,REGEXEXTRACT将返回捕获的文本,因此您可以这样做:

=REGEXEXTRACT( B1 ; "raid_boss=([a-zA-Z0-9_]+)" )

答案 1 :(得分:0)

Javascript不是问题 - Google表格使用缺少外观的RE2 以及其他有用的东西。

您可以使用:

regexextract(B1, ".*raid_boss=(.*)")  

或者本机表函数,如FIND,SUBSTITUTE,如果它不起作用

找到一个好的正则表达式测试工具很棘手 - 例如,你可以创建一些在http://rubular.com/中工作但在GSheets中失败的东西。您需要确保您的工具支持RE2风格,例如:https://regoio.herokuapp.com/