【发布时间】:2019-11-14 16:31:30
【问题描述】:
是否可以在 Excel VBA 中嵌套正则表达式替换函数和/或作为单元格公式?
例如,我有以下文本:“Lorem [ipsum dolor sit] amet, [consetetur sadipscing] elitr。” (注意方括号)
是否有可能将其转换为:“Lorem ipsum_dolor_sit amet, consetetur_sadipscing elitr.”?
所以我想:
- 找到方括号内的所有术语
- 在其中:替换 所有带下划线的空格
- 去掉方括号
并通过这些替换返回整个句子。
以我目前的尝试,我只能删除括号:
Function RegexReplace(...)
...
Set oRegex = CreateObject("VBScript.RegExp")
oRegex.Pattern = "\[([^\[\]]*)\]"
oRegex.Replace(strInput, "$1")
...
并将此函数作为公式嵌套在单元格中或代码oRegex.Replace(strInput, Replace("$1", " ", "_") 中似乎是不可能的,因为嵌套替换函数Replace(.. 在评估替换字符串$1 之前被调用,因此没有空白替换。
任何解决方案的建议?谢谢:-)
【问题讨论】:
-
你看过this answer吗?
-
如果没有
[或],是否要添加空格?喜欢a [ b c->a [ b_c?或者a b]c=>a_b]c? -
@PeterT:是的,我看了一下,但我不明白这些信息如何帮助解决我的问题。有什么关于嵌套替换的吗?
-
@WiktorStribiżew:如果没有括号,我不想替换任何东西。但是对于一对打开和关闭的括号,我想用里面的 unsercores 替换空白并删除括号。仅打开或仅关闭,甚至嵌套括号都没有用例。