![]() |
1
2
如果您的工具/编辑器支持look aheads,您可以尝试:
这意味着:
纯英语:只有在字符串“firstname”(不区分大小写)前面有零个或偶数个双引号,直到行尾时,它才与字符串“firstname”匹配。 请注意,如果您的行以注释结尾,并且注释中有引号,则它将失败! |
![]() |
2
0
regexp不区分上下文,因此很难做到这一点。 |
![]() |
3
0
如果你总是期待
否则,如果您不能保证右引号的位置,那么使用regex将不是理想的选择。
或者你可以把注意力集中在
|
![]() |
4
0
正则表达式本身不 做 东西,他们 接受 串。类正则表达式
无论使用何种情况,都将接受字符串“firstname”。然后用所选语言编写一个替换操作,以替换用“firstname”识别的字符串。您可能会发现所选正则表达式实现具有不区分大小写的匹配功能,这将简化正则表达式。 问题在于,如果firstname在表达式中的位置不正确,则不能修改它的大小写——即如何更改示例中firstname的第一个匹配项,而不是第二个匹配项。在sed中很简单,因为默认情况下,它只在第一次匹配一行regex时进行替换。在VBA我一点也不知道。 你的规则是:
? 如果第三个可能有问题,如果“”可以嵌套。regex不能真正处理任意深度的括号嵌套(不管用什么字符来括起来),尽管有些实现有办法绕过这个限制。但是,如果您发现自己试图编写一个正则表达式来匹配特定数量的匹配方括号中的字符串,则可以确定您使用了错误的工具。 编辑:在第三种情况下,将我的regex修改为
它应该与任何出现在firstname前面的 |
![]() |
DotFX · RegEx捕获关键字前但括号后的所有内容 4 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 5 月前 |
![]() |
iato · 确保正则表达式不从命名材料中的数字中提取 5 月前 |
![]() |
vr8ce · 非成对标记中特定字符的正则表达式 5 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 5 月前 |
![]() |
Carsten · 使用最近的搜索模式更改文本块 5 月前 |