iOS 正则表达式:未知转义序列“\|”
Posted
技术标签:
【中文标题】iOS 正则表达式:未知转义序列“\\|”【英文标题】:iOS Regex: Unknown escape sequence "\|"iOS 正则表达式:未知转义序列“\|” 【发布时间】:2012-07-11 15:05:23 【问题描述】:我收到一个奇怪的警告,因此我的正则表达式搜索不起作用。这是行:
NSRange r = [html rangeOfString:@"\|(.*)\|" options:NSRegularExpressionSearch];
HTML
是一个字符串,我确信它包含上述正则表达式的单个匹配项。
警告只在第一次出现“\|”时出现,而不是同时出现。
非常感谢任何帮助!
【问题讨论】:
【参考方案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|")以上是关于iOS 正则表达式:未知转义序列“\|”的主要内容,如果未能解决你的问题,请参考以下文章