正则表达式本身不做任何事情,它们接受字符串。一个正则表达式
[fF][iI][rR][sS][tT][nN][aA][mM][Ee]
无论使用哪种情况,都将接受字符串“名字”。然后你用你选择的语言编写一个替换操作来替换用'firstName'识别的字符串。您可能会发现您选择的正则表达式实现具有不区分大小写的匹配功能,这将简化正则表达式。
您遇到的问题是,当 FirstName 在您的表达式中的位置不正确时,不修改 FirstName 的大小写 - 即如何在示例中更改 FirstName 的第一次出现,而不是第二次。在 sed 中这很容易,因为默认情况下,它只会在第一次匹配一行中的正则表达式时进行替换。在VBA中,我一无所知。
你的规则是:
- 仅对第一个匹配项进行转换;
- 仅将大小写转换到第一个 = 左侧的字符串;
- 仅当匹配不在“”内时才转换大小写;
?
如果第三个你可能会遇到问题,如果“”可以嵌套。正则表达式不能真正应对括号的任意深度嵌套(无论使用什么字符来括号),尽管一些实现有解决这个限制的方法。但是,如果您发现自己尝试编写正则表达式来匹配特定数量的匹配括号内的字符串,则可以确定您使用了错误的工具。
编辑:在第三种情况下,将我的正则表达式修改为
.*[^"].*[fF][iI][rR][sS][tT][nN][aA][mM][Ee]
这应该匹配任何出现的名字前面没有“