正则表达式,在自己的,不要做东西,他们接受字符串。像
[fF][iI][rR][sS][tT][nN][aA][mM][Ee]
regex将接受任何使用情况下,字符串“名字”。然后,用您选择的语言编写替换操作来替换用'firstName'识别的字符串。您可能会发现,您选择的正则表达式实现具有不区分大小写的匹配功能,可以简化正则表达式。
你的问题是在不修改名字的情况下,当它不是在你的表达中的正确位置 - 即你如何改变你的例子中FirstName的第一次出现,但不是第二次。在sed中很容易,因为默认情况下,只有在第一次匹配正则表达式时才会进行替换。在VBA中我没有任何线索。
是您的规则:
- 变换情况只是第一场比赛;
- 只将变换大小写在字符串的第一个左边=符号;
- 只有当匹配不在里面时才转换case“”;
?
如果第三个可能有问题,如果可以嵌套。正则表达式无法真正处理任意深度的括号嵌套(无论用什么字符括起来),尽管有些实现方法可以解决这个限制。但是,如果您发现自己试图编写正则表达式来匹配特定数量的匹配括号内的字符串,则可以确定您使用的是错误的工具。
编辑:在第三的情况下修改我的正则表达式来
.*[^"].*[fF][iI][rR][sS][tT][nN][aA][mM][Ee]
应该匹配不是由“
太棒了。这似乎有伎俩。非常感谢。 – mwolfe02 2010-03-06 16:32:00
不客气mwolfe02。 – 2010-03-06 16:37:38
我没有在我的问题中指定这个,但我需要避免替换出现在另一个单词内的单词。我通过添加\ b来检查'文字边界'来完成这项工作。正在使用的正则表达式现在是:(?im)\ bFirstName \ b(?=([^“] *”[^“] *”)* [^“] * $) – mwolfe02 2010-03-06 16:55:27