...or .我的公式有问题。
我有一系列的项目编号,我只想提取第一个和第三个破折号之间的信息,如果有的话。
第一个破折号之前的信息必须是字母。
第一和第二个破折号之间的信息必须是字母(即A)。
第二和第三冲刺之间的信息必须是数字。
我希望其他的事情都被忽略(我已经用iferror包装了regex提取液来完成这个任务)
这是我的公式:
=arrayformula(iferror(regexextract(B1:B,"[A-z]+-([A-Z\{\\\]\^_`a-z]+-[0-9]+)-"),"")它大部分时间都在工作。
但在这方面: AAB-2971-PN-B-11-03
它摘录如下: B-11
但我希望这是一个错误/空白。
其他正确的例子:
AAB- LL-1234 -00应提取LL-1234
AAN-1234应该会出错
AAC-1234-LL应该会出错
AAC-1234-ll-123应出错
发布于 2019-12-06 02:26:15
使用这个正则表达式:
[A-Za-z]+-[A-Za-z]+-([0-9]+)-提取2组。
正则表达式存在一些问题,但主要的问题是[A-z]并不意味着“所有字母”,它意味着“A和z之间的所有字符”,其中包括Z和a之间的字符,即[、\、]、^、_和回勾。
我怀疑[A-Z{\]\^_A]+is your attempt atA‘。
发布于 2019-12-06 21:14:09
尝试:
=ARRAYFORMULA(IFNA(REGEXEXTRACT(INDEX(SPLIT(B1:B, "-"),,2)&"", "\D+")&
REGEXEXTRACT(INDEX("-"&SPLIT(B1:B, "-"),,3), "-\d+")))

或者:
=ARRAYFORMULA(IFERROR(IF((REGEXMATCH(INDEX(SPLIT(B1:B, "-"),,1), "[A-Za-z]+"))*
(NOT(REGEXMATCH(INDEX(SPLIT(B1:B, "-"),,1), "[0-9]+"))),
IFNA(REGEXEXTRACT(INDEX(SPLIT(B1:B, "-"),,2)&"", "\D+")&
REGEXEXTRACT(INDEX("-"&SPLIT(B1:B, "-"),,3), "-\d+")), )))

https://stackoverflow.com/questions/59205917
复制相似问题