好吧,所以我试图使用正则表达式来匹配角色的实例,只要它没有被转义(使用反斜杠)并决定使用负面的后视,如下所示:
(?<!\\)[*]
Run Code Online (Sandbox Code Playgroud)
这成功并且按预期失败foo*,foo\*分别使用和等字符串.
但是,它不适用于字符串,例如foo\\*- 在特殊字符前面有一个反斜杠转义另一个反斜杠(一个本身是转义的转义序列).
是否可以使用负面后视(或其他一些技术)来跳过特殊字符,只有它们前面有奇数个反斜杠?
我发现以下解决方案适用于NSRegularExpression但也适用于我尝试过的所有支持负面观察的regexp实现:
(?<!\\)(?:(\\\\)*)[*]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,第二个不匹配的括号匹配任何反斜杠对,有效地消除它们,此时负面的后视可以按预期比较任何剩余的(奇数编号)反斜杠.
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |