RegExReplace-请给我一些示例,让我开始学习
我正在尝试使用RegExReplace在解析某些文本以便在Access数据库中使用之前对其进行预处理。目前,我一直在将越来越多的字符串模式定义到一个表中,然后使用VBA中的stock Replace()函数使用该表。工作正常,但在一些方面没有达到目标;我很确定正则表达式对我来说是一个更好的长期解决方案,但我完全不知道如何构造它们 我想看看这里的聪明人是否可以通过我的数据中的一些实际示例,通过演示将产生所需结果的正则表达式字符串,帮助我完成这项任务:RegExReplace-请给我一些示例,让我开始学习,regex,ms-access,vba,Regex,Ms Access,Vba,我正在尝试使用RegExReplace在解析某些文本以便在Access数据库中使用之前对其进行预处理。目前,我一直在将越来越多的字符串模式定义到一个表中,然后使用VBA中的stock Replace()函数使用该表。工作正常,但在一些方面没有达到目标;我很确定正则表达式对我来说是一个更好的长期解决方案,但我完全不知道如何构造它们 我想看看这里的聪明人是否可以通过我的数据中的一些实际示例,通过演示将产生所需结果的正则表达式字符串,帮助我完成这项任务: 1. 6 IN
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
我的模式失败的方式有:导管灌注=>导管灌注
我将使用多通道方法,而不是试图提出一些非常复杂的表达式
谁能为这些样品中的任何一个提供一些初步指导。我相信我将能够根据需要利用这些样本进行扩展
[编辑:]我确实找到了一些有用的例子:
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
一些可能有用的正则表达式:
/\s+IN/IN/
/\s+X\s+/_X_/
/(?:\d)X(?:\d)/_X_/
在这里,多次传球是保持头脑清醒的唯一方法。不要试图一次通过就完成。这和正则表达式有什么关系?请原谅我的语法错误。将“RegexReplace”与“Regex”连接似乎是合乎逻辑的,因为构造的字符串用于查找替换文本的模式与Regex非常相似。提供的任何其他指针?
s/\s+X\s+/\ux\ux/
不适用于4。8X120MM 8_X_120MM
,而s/(?\d)X(?\d)/\u X/
只是。。。模式语法错误单面体,我意识到没有单一的模式可以解决我的需要。需要一种按规定顺序的多路径方法。虽然Terje提供的示例不是通用的,但它确实开始照到我的要求。