regex - 使用正则表达式识别 EQUIPMENTID 编号 - VBA
问题描述
在努力构建一个正则表达式来识别设备编号时,我需要它来识别多种格式的设备编号,包括池设备编号,例如 或AFD21101
包括根据测试数据的各种前缀。AFD21101-02-03
AFD21101-2-3
欢迎任何提示或反馈,可能每个场景使用多个 RegExp 可能会更容易,但我希望拥有一个能够识别任何这些模式并能够从字符串中提取以更详细的顺序进行进一步处理的大师。可能转换为长格式等。
非常感谢任何帮助。希望我能报答。
到目前为止我已经尝试过:
^[abcpfsmschafddfcpdcdplldt][glvmdugmrxftiichlewsnuabn][mmrprbdpucdsxtvuwcrslbubk][0-9][0-9xX][0-9xX][0-9xX][0-9xX]|[0-9xX-][0-9]|[0-9]
^[abcpfsmschafddfcpdcdplldt][glvmdugmrxftiichlewsnuabn][mmrprbdpucdsxtvuwcrslbubk][0-9][0-9xX][0-9xX][0-9xX][0-9xX]
^(BLM)|(SUB)|
(CVR)|FDR|SMP|CRU|HXC|ATS|AFD|FTS|DIX|DIT|FIT|FCV|KV|FV|CHU|PLW|BCR|DEC|CTR|CWR|V|DSS|PNL|MTR|LUB|LAU|CCL|DBB|TNK|THK|PIT|[0-9][0-9xX][0-9xX][0-9xX][0-9xX]
Testdata - 必须按照下面的 testdata 示例处理以逗号或多行分隔的多个
// Example test data 1: (CSV+)
CRN21003 (CB-3), CRN21004 (CB-4)
// Example test data 2: (CSV)
CVR21404, CHU21437, AFD21401
// Example test data 3: (Multi-line)
MGD22401 - 16
DEC22401 - 16
// Example test data 4: (In string)
AFD11122 SOME OTHER RANDOM DATA WDC11121_22 SOME OTHER RANDOM DATA
//Additional matches
AFD21101-03
AFD21101_03
AFD21101-02-03
AFD21101_02_03
AFD21101-2-3
AFD21101_2_3
FDR21407-08
BLM21401
SUB21601
CVR21601
Fdr21601
SMP21501
CRU21501
HXC21501
AFD21501
FTS21X01
DIX21301
DIT22501
FIT21X0X
FCV21501
图案:
基数最多为 8 位
- 1-3 个字母 (AZ)
- 5 位数字 (0-9),包括 X 作为通配符
后跟汇集的设备 ID
e.g. AFD21101-2-3, AFD21101-02-03 or AFD21101_02_03
_
或者-
是指示缩写的后续设备 ID 或范围的分隔符。AFD21101-02-03
等价于AFD21101
,AFD21102
,AFD21103
完整形式
可能的前缀的继续
KV
CHU
PLW
BCR
DEC
CTR
CWR
V
DSS
PNL
MTR
LUB
LAU
CCL
DBB
TNK
THK
PIT
AGM2XXXX - valid
一些无效匹配将类似于
AGM211011
或AGMXXXXX
或21101
或2110
或AGM21101-094-034
(AGM
仅前缀不带尾随 5 位数字/X 通配符)
解决方案
如果我理解您的问题,您需要获取以提供的子字符串开头并包含数字的字符串。
您可以尝试以下正则表达式。
^(?:BLM|SUB|CVR|FDR|SMP|CRU|HXC|ATS|AFD|FTS|DIX|DIT|FIT|FCV|KV|FV|CHU|PLW|BCR|DEC|CTR|CWR|V|DSS|PNL|MTR|LUB|LAU|CCL|DBB|TNK|THK|PIT)[0-9_-]+
细节:
^
: 字符串的开始?:
: 非捕获组(?:BLM|SUB|CVR|FDR|SMP|CRU|HXC|ATS|AFD|FTS|DIX|DIT|FIT|FCV|KV|FV|CHU|PLW|BCR|DEC|CTR|CWR|V|DSS|PNL|MTR|LUB|LAU|CCL|DBB|TNK|THK|PIT)
: 前缀列表。
推荐阅读
- python - dask:如何避免任务超时?
- android - 如何在我的 Chrome / Firefox 浏览器中查看 SQLite 数据库?
- apache-kafka - vert.x 事件总线能否取代对 Kafka 的需求?
- ios - 如何从 xarchive 启用 iOS 功能?
- java - 平板电脑中 System.arraycopy 突然变慢
- python - 导入 Python 文件 [ModuleNotFound]
- oracle - 如何在 oracle 表单中使用 TEXT_IO 打开直接 CSV 文件?
- php - 如何在 php 中覆盖 json_encode() 功能以将 null 替换为“”
- unit-testing - 对 Sanity Studio 项目进行单元测试时如何配置 Babel
- grafana - grafana 中警报指标中硬编码参数的替代方案