我尝试使用RegExReplace在解析某些文本以便在Access数据库中使用之前对其进行预处理。目前我已经将越来越多的字符串模式定义到表中,然后使用该表在VBA中使用stock Replace()函数。工作正常,但在少数地区错过了标记;我很确定正则表达式对我来说是一个更好的长期解决方案,但我完全不知道如何构建它们。
我想看看这里的聪明人是否可以通过我的数据中的一些实际示例,通过说明将产生所需结果的正则表达式字符串来帮助我完成任务:
1. 6 IN 6IN
2. 12.3 IN X 2 YD 12.3IN_X_2YD
3. 6IN X 4IN 6IN_X_4IN
4. 8X120MM 8_X_120MM
5. 1 1/2" 1.5IN
6. CAT, DOG CAT DOG
7. CAT,DOG CAT DOG
8. CAT ,DOG CAT DOG
9. CAT , DOG CAT DOG
我的模式失败的方式如下:CATHETER INFUSION => CATHETERINFUSION
我将使用多遍方法与尝试提出一些非常复杂的表达式。
任何人都可以为这些样品提供一些初步指导。我相信我能够根据需要利用这些样本进行扩展。
[编辑:]我找到了一些有用的例子:
NewStr := RegExReplace("abc123123", "123$", "xyz") ; Returns "abc123xyz" because the $ allows a match only at the end.
NewStr := RegExReplace("abc123", "i)^ABC") ; Returns "123" because a match was achieved via the case-insensitive option.
NewStr := RegExReplace("abcXYZ123", "abc(.*)123", "aaa$1zzz") ; Returns "aaaXYZzzz" by means of the $1 backreference.
NewStr := RegExReplace("abc123abc456", "abc\d+", "", ReplacementCount) ; Returns "" and stores 2 in ReplacementCount.
[编辑2]:取得良好进展!
strText = "BANDAGE, ADHESIVE, 2 FT X 3.5 IN X 0.25MM, LATEX-FREE"
strResult = RegExReplace(strText, "(,|\s+)", " ", True)
strResult = RegExReplace(strResult, "\s+(IN|FT|YD)\s+", "$1 ", True)
strResult = RegExReplace(strResult, "\s+X\s+", "_X_", True)
产地:
BANDAGE ADHESIVE 2FT_X_3.5IN_X_0.25MM LATEX-FREE
答案 0 :(得分:0)
一些可能有用的正则表达式:
/\s+IN/IN/
/\s+X\s+/_X_/
/(?:\d)X(?:\d)/_X_/