gpt4 book ai didi

regex - 仅匹配未转义字符的正则表达式

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:58 25 4
gpt4 key购买 nike

好的,所以我尝试使用正则表达式来匹配一个字符的实例,只有当它没有被转义(使用反斜杠)时,我才决定像这样使用负向后视:

(?<!\\)[*]

如预期的那样成功和失败的字符串分别为 foo*foo\*

但是,它不适用于诸如 foo\\* 之类的字符串,即特殊字符前面有一个反斜杠转义另一个反斜杠(转义序列是本身逃脱了)。

只有当特殊字符前面有奇数个反斜杠时,是否可以使用负向后视(或其他一些技术)来跳过特殊字符?

最佳答案

我找到了以下适用于 NSRegularExpression 的解决方案,但也适用于我尝试过的每个支持负向后视的正则表达式实现:

(?<!\\)(?:(\\\\)*)[*]

在这种情况下,第二个不匹配的括号匹配任何一对反斜杠,有效地消除它们,此时负向后看可以按预期比较任何剩余的(奇数)反斜杠。

关于regex - 仅匹配未转义字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28113962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com