我正在从另一个Google表中导入一个范围,我需要从导入的数据中提取一个特定的数字。这些数据看起来类似于:
R2.word.4.word
我要提取第二个号码。它总是遵循这种格式(一个字母和一个数字,然后一个句号,一个单词,然后一个句号,然后一个数字(可能是单数或两位数),然后是一个句号和一个单词)。提取第二个数字的正则表达式应该是:(\d+)(?!.*\d),我已经在多个regex测试站点中测试了它。但是,Google给出了一个错误,说明它不是正则表达式。我尝试过这样的方法(删除URL和工作表名称):
=REGEXEXTRACT(IMPORTRANGE(URL,Sheet!A2:A200), "(\d+)(?!.*\d"))
有人能帮我理解我怎么解决这个问题吗?
这里的另一个问题是,它实际上并不是在导入范围。我只让它在第一个单元格上导入,而不是从列中导入。
发布于 2022-08-02 07:33:30
您可以编写如下模式:
=REGEXEXTRACT(A2,"^[A-Z]\d+\.\w+\.(\d+)")
解释
^
开始[A-Z]
匹配单个大写字符\d+
匹配1+数字\.
匹配一个点\w+
匹配1+字字符\.
匹配一个点(\d+)
捕获组1,匹配1+位数
发布于 2022-08-02 07:39:05
使用您所显示的示例,请尝试以下regex。
=REGEXEXTRACT(A2,"^[a-zA-Z]\d+\.[^.]*\.(\d+)\.\S+$")
以下是上述正则表达式的在线演示。
解释:添加了对上述正则表达式的详细说明。
^[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.
发布于 2022-08-02 07:54:56
“它将始终遵循这种格式”
基于以上所述,您可以使用REGEXEXTRACT()
,但是它比简单的SPLIT()
慢,而简单的SPLIT()
在您的标准格式中是理想的:
B2
中的公式
=INDEX(SPLIT(A2:A3,"."),0,3)
默认情况下,这是一个数组公式,并且会溢出所有值.把它应用到你的整个范围。
https://stackoverflow.com/questions/73202089
复制相似问题