我正试图在删除某些前缀和多余字符后,在Excel中清除一组字符串以提取某些单词。最初,我试着用FIND,LEFT,MID等等。然后,我遇到了这个有用的帖子,并尝试使用正则表达式。从Excel删除单词中的某些前缀的正则表达式模式
https://superuser.com/questions/794536/excel-formulas-for-stripping-out-prefix-suffix-around-number
我已经使用UDF给出有所谓的删除这需要一个正则表达式的说法。现在,我仍然无法删除我想删除的所有项目。
在附件的Excel中,您可以看到我所尝试的以及我正在寻找的答案。 这里是我想删除的前缀: 括号内开始的数字 - 理想情况下,我希望在一个单独的列中。 连字符前的任意字母有一些“l-”,“al-” ,然后是下面的这些前缀。 双 亿元 发 WA 沃尔玛
我怎样写一个正则表达式这将删除所有上面的前缀?
这里是我使用UDF: 功能删除(objCell量程,strPattern作为字符串)
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = strPattern
Remove = RegEx.Replace(objCell.Value, "")
端功能
这里是链接到XLSM文件,其中包含数据I有: https://www.dropbox.com/s/et9ee727ompj5fl/Regex%20Trials.xlsm?dl=0
,这里是一个截图告诉你我在寻找:
我不知道怎么的模式正则表达式中VBA工作,但我想你”您需要使用脱字符号来定位字符串的开始处的正则表达式,垂直栏符号将表达式和可选匹配的问号符号。在perl兼容的正则表达式中,您还可以使用(?!\ w)指定不应跟随任何单词字符。例如'Regex.Replace(Obj.CellValue,“^(l- | al- | bi | bil | fa | wa | wal)”)或'^(l- | al- | bi | bil | fa | wa | WAL)(\ W)'?!。这有帮助吗? – rubystallion
@rubystallion,非常感谢。它确实有帮助。在发布的所有解决方案中,您的解决方案为我提供了一些具体的工作。我认为,VBA中的正则表达式模式与其他语言的工作方式相似。在玩了一段时间之后,我发现这种模式与我的许多答案相匹配 - (l- | al- | bi | bil | fa | wa- | wa)。在这里,如果我有脱字符号,它似乎不起作用。为什么?此外,在这种情况下,我需要编写另一个正则表达式首先使用[0-9 :()]删除括号中的数字 - 是否有将这两种方法合并为一个正则表达式的方法? –