regex - regexextract 在 Google 表格中无法按我想要的方式工作
问题描述
...或者更确切地说...我的公式有问题。
我有一系列项目编号,我只想提取第一个和第三个破折号之间的信息(如果有的话)。
第一个破折号之前的信息必须是字母。
第一个和第二个破折号之间的信息必须是字母(即 Az)。
第二个和第三个破折号之间的信息必须是数字。
我希望忽略其他所有内容(我已将 regexextract 包装在 iferror 中以执行此操作)
这是我的公式:
=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 应该出错
解决方案
使用这个正则表达式:
[A-Za-z]+-[A-Za-z]+-([0-9]+)-
并提取组2
。
您的正则表达式存在一些问题,但主要[A-z]
问题不是“所有字母”,而是“和之间的所有字符A
” z
,其中包括和之间的字符Z
,即 , , ,a
和[
反\
勾]
号。^
_
我怀疑 [A-Z{\]\^_
az]+ is your attempt at
[A-Za-z]`。
推荐阅读
- ios - 如何防止用户在 UITextfield 中输入'#'和空格('') - swift?
- go - 从文件和存储文件创建 sha256 的最佳模式
- spring - 使用 java config 注入 Spring 构造函数
- c++ - 优先顺序:智能指针和类析构函数
- macos - 从 Safari 和 Mail 中查找选定文本的范围
- fabricjs - 在fabric.js中画两个箭头
- android - 从recyclerview中选择项目后如何隐藏软键盘?
- c++ - 在静态库中内联类方法
- ubuntu - unit ark.service未正确加载:Exec格式错误
- javascript - mediarecorder.requestdata 不返回任何内容