Xcode中的RegExp:从结果集中排除匹配?

时间:2010-11-08 13:10:31

标签: regex xcode

寻找在Xcode的“Project Find”中使用的正确的正则表达式语法,以获取所有“nslog”而不是“// nslog”。可以独立进行每次搜索,但不确定如何“链接”它们。

2 个答案:

答案 0 :(得分:6)

使用正则表达式说“不遵循”的常用方法是使用(?<!...)构造。所以有可能

(?<!//)nslog

可能会奏效。这取决于你正在使用的工具遵循哪种正则表达式,这是我不知道的。但是自从你提出要求以来已经过了一个小时,没有其他人给你任何答案,所以我认为这不会伤害任何事情。

如果你不能做后悔否定,那么保证可以在任何地方工作的模式是

[^/][^/]nslog

然而,并不意味着与之前的模式相同!

而不是说不能跟随两个斜杠,而是意味着之前必须有两个非斜杠。这些实际上是不同的;考虑nslog的情况发生在该行的开头。第一种模式会成功,第二种模式会失败。

最后,如果使用斜杠作为模式分隔符 - 意味着它包围并引用模式 - 那么你必须执行以下操作之一:

  1. 选择备用模式分隔符;例如,#(?<!//)nslog#如果允许您选择octothorpe作为模式周围的引号分隔符。
  2. 回击内部使用的任何斜线并诱导LTS(倾斜牙签综合征);例如,(?<!\/\/)nslog
  3. 使用某种形式的数字转义,例如\057表示八进制或\x2F表示十六进制;例如,(?<!\x2F\x2F)nslog
  4. 希望这有帮助。

答案 1 :(得分:0)

我认为最接近的是搜索例如[^/]NSLog - 会找到NSLog但不会//NSLog。当然它仍会找到// NSLog,这可能适用于您,也可能不适合您。