首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Google文档中的IMPORTRANGE上使用REGEXEXTRACT

在Google文档中的IMPORTRANGE上使用REGEXEXTRACT
EN

Stack Overflow用户
提问于 2022-08-02 04:46:42
回答 3查看 116关注 0票数 2

我正在从另一个Google表中导入一个范围,我需要从导入的数据中提取一个特定的数字。这些数据看起来类似于:

R2.word.4.word

我要提取第二个号码。它总是遵循这种格式(一个字母和一个数字,然后一个句号,一个单词,然后一个句号,然后一个数字(可能是单数或两位数),然后是一个句号和一个单词)。提取第二个数字的正则表达式应该是:(\d+)(?!.*\d),我已经在多个regex测试站点中测试了它。但是,Google给出了一个错误,说明它不是正则表达式。我尝试过这样的方法(删除URL和工作表名称):

代码语言:javascript
运行
复制
=REGEXEXTRACT(IMPORTRANGE(URL,Sheet!A2:A200), "(\d+)(?!.*\d")) 

有人能帮我理解我怎么解决这个问题吗?

这里的另一个问题是,它实际上并不是在导入范围。我只让它在第一个单元格上导入,而不是从列中导入。

EN

回答 3

Stack Overflow用户

发布于 2022-08-02 07:33:30

您可以编写如下模式:

代码语言:javascript
运行
复制
=REGEXEXTRACT(A2,"^[A-Z]\d+\.\w+\.(\d+)")

解释

  • 字符串的^开始
  • [A-Z]匹配单个大写字符
  • \d+匹配1+数字
  • \.匹配一个点
  • \w+匹配1+字字符
  • \.匹配一个点
  • (\d+)捕获组1,匹配1+位数

Regex演示

票数 4
EN

Stack Overflow用户

发布于 2022-08-02 07:39:05

使用您所显示的示例,请尝试以下regex。

代码语言:javascript
运行
复制
=REGEXEXTRACT(A2,"^[a-zA-Z]\d+\.[^.]*\.(\d+)\.\S+$")

以下是上述正则表达式的在线演示

解释:添加了对上述正则表达式的详细说明。

代码语言:javascript
运行
复制
^[a-zA-Z]  ##From starting of value matching a-zA-Z here.
\d+        ##Matching 1 or more occurrences of digits.
\.[^.]*\.  ##Matching literal dot till next occurrence of dot here.
(\d+)      ##Creating 1 capturing group and which has 1 or more digits matching in it.
\.\S+$     ##Matching literal dot followed by 1o or more non-spaces till end of value.
票数 3
EN

Stack Overflow用户

发布于 2022-08-02 07:54:56

“它将始终遵循这种格式”

基于以上所述,您可以使用REGEXEXTRACT(),但是它比简单的SPLIT()慢,而简单的SPLIT()在您的标准格式中是理想的:

B2中的公式

代码语言:javascript
运行
复制
=INDEX(SPLIT(A2:A3,"."),0,3)

默认情况下,这是一个数组公式,并且会溢出所有值.把它应用到你的整个范围。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73202089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档