【问题标题】:iOS Regex: Unknown escape sequence "\|"iOS 正则表达式:未知转义序列“\|”
【发布时间】:2012-07-11 15:05:23
【问题描述】:

我收到一个奇怪的警告,因此我的正则表达式搜索不起作用。这是行:

NSRange r = [HTML rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];

HTML 是一个字符串,我确信它包含上述正则表达式的单个匹配项。

警告只在第一次出现“\|”时出现,而不是同时出现。

非常感谢任何帮助!

【问题讨论】:

    标签: objective-c ios regex nsregularexpression


    【解决方案1】:

    加起来,如果你正在处理 unicode 格式的特殊字符序列,你可以使用这样的东西:

    const unichar specialCharSequence='some special character';
    if(specialCharSequence==L'\uxxxx')
    {
       //handle the occurence of this special character
    }
    

    【讨论】:

      【解决方案2】:

      您收到警告是因为 \| 在 Objective-C(或 C 或 C++)中不是有效的转义序列。编译器忽略了这一点,只使用了一个原始的| 字符,所以你实际传入的字符串是@"|(.*)|"

      要获得您想要的行为,您必须在源代码中转义反斜杠,以便正则表达式引擎看到文字反斜杠并将 | 字符解释为文字而不是交替,例如@"\\|(.*)\\|".

      【讨论】:

      • 跟进问题:假设我将其与“|adsfsad| asdfsadf |”之类的字符串匹配我只想捕获第一个(“|asdfsad|”)而不是匹配整个字符串,我该如何指定?
      • 您可以使用“\\|(.*?)\\|”抓住第一个 ("|asdfsad|")
      猜你喜欢
      • 1970-01-01
      • 2015-11-05
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多