我搜索但没有找到问题的答案 - 也许它是如此明显以至于没有其他人不得不问......
我UltraEdit 16.00
用来运行我的Regular Expressions in PERL mode
...
情况:
我有一个分隔字符串,它可以包含可变数量的重复段,这些段必须遵循非常特定的格式。这些段在整个分隔字符串中随机出现。
例子:
CLP*data*data*data~REF*data*data~N1*data*data*data~**CAS*OA*29*99.99**~AMT*I*99.99~SVC*data*data*data*data~**CAS*PR*99.99**~**CAS*CO**99.99**~DTM*150*date~AMT*B6*99.99~SVC*data*data*data*data~CAS*PR*N16*99.99~**CAS*CO* *99.99**...line continues from here.
格式正确-CAS*OA*29*99.99~
格式不正确 1 -CAS*OA* *99.99~
格式不正确 2 -CAS*OA**99.99~
目标:
仅识别所有 CAS 段都符合格式的字符串。
我尝试过的事情:
(顺便说一句:我知道我的正则表达式没有优化,所以请让我休息一下)
CAS 段 缺失值或包含一个或多个空格
CAS\*(OA|PR|CR|CO)\*\*[-]?[\d]+\.?[\d]{0,2}
~ 如果找到则
CAS\*(OA|PR|CR|CO)\*[\s]+?\*[-]?[\d]+\.?[\d]{0,2}
匹配第一个实例 ~ 如果找到则匹配第一个实例
CAS 段不缺少值或包含空格
CAS\*(OA|PR|CR|CO)\*[^0-9A-Z]+?\*[-]?[\d]+\.?[\d]{0,2}~
同样,匹配第一个实例
使用上述组合的负前瞻(我是尝试这种方法的新手)
^(?:(?!ab).)+$
- ab
=> one of the above regular expressions
- 从来没有让它工作
问题:
如何编写正则表达式来强制/验证每个 CAS 实例的格式,无论它发生的频率如何(有可能出现 0 个实例)?