RegExReplace - 请让我开始的几个例子

时间:2014-10-12 02:17:45

标签: regex access-vba

我尝试使用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

1 个答案:

答案 0 :(得分:0)

一些可能有用的正则表达式:

/\s+IN/IN/
/\s+X\s+/_X_/
/(?:\d)X(?:\d)/_X_/