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

Xcode中的RegExp:是否从结果集中排除匹配项?,regex,xcode,Regex,Xcode,正在寻找在Xcode的“Project Find”中使用的适当正则表达式语法,以获取所有出现的“nslog”而不是“//nslog”。可以独立完成每个搜索,但不确定如何“链接”它们 我认为您能找到的最接近的方法是搜索例如[^/]NSLog——它将找到NSLog,但不会找到//NSLog。当然,它仍然会找到//NSLog,这可能对您有效,也可能对您无效。正则表达式表示“不遵循”的正常方式是使用(?构造。因此,有可能 (?<!//)nslog 但是,这并不意味着与前面的模式相同 而不是说必须不

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

我认为您能找到的最接近的方法是搜索例如
[^/]NSLog
——它将找到
NSLog
,但不会找到
//NSLog
。当然,它仍然会找到
//NSLog
,这可能对您有效,也可能对您无效。

正则表达式表示“不遵循”的正常方式是使用
(?构造。因此,有可能

(?<!//)nslog 但是,这并不意味着与前面的模式相同

而不是说必须不遵循两条斜线,它意味着前面必须有两条非斜线。这些实际上是不同的;考虑在开始时出现的<代码> NSLoG 的情况。第一种模式会成功,第二种模式会失败。

最后,如果使用斜杠作为模式定界符,也就是说,它包围并引用模式,那么您必须执行以下操作之一:

  • 选择一个备用模式定界符;例如,
    #(?如果允许您选择一个八进制作为模式周围的引用定界符
  • 对内部使用的任何斜杠进行反击,并诱发LTS(倾斜牙签综合症);例如,
    (?)
  • 使用某种形式的数字转义,例如对于八进制使用
    \057
    ,对于十六进制使用
    \x2F
    ;例如,
    (?)

  • 希望这有帮助。

    +1
    (?是正确答案。根据,XCode使用ICU库进行正则表达式搜索,根据使用[^pattern]不起作用,但反向查找起作用。此外,它还说必须用反斜杠来避开正斜杠。不适用于(在XCode中使用的)@Drackir:在发布上述答案之前,我确实用Xcode 3.2.3测试了这个问题,它似乎工作正常。你怎么会认为它不工作?你真的尝试过吗?我收回我的评论:P我测试过,但我认为光标一定在我的测试行下方,并且没有循环到开头。对不起![^/]对我来说是有效的,尽管它很容易受到tchrist在下面提到的内容的影响(关于在行首没有找到它们)。@Drackir:没问题-你让我担心了一会儿。;-)
    
    [^/][^/]nslog