Objective-C正则表达式单引号和双引号

Objective-C正则表达式单引号和双引号,objective-c,regex,Objective C,Regex,我试图在obj-c中设计一个正则表达式来匹配以下任何jquery类型语句 $(body) $('.body') $("bo-dy") 我遇到的问题是,每当主题包含单引号或双引号时,obj-c似乎都会失败 "\\$\\([a-zA-Z0-9_#-\\.'\"]+\\)" 从上面 $(test) <- success $(.d-s3#_t) <- success $('test') <- fail $("test) <- fail 同样的结果。它在其他语言平台上运行良

我试图在obj-c中设计一个正则表达式来匹配以下任何jquery类型语句

$(body)
$('.body')
$("bo-dy")
我遇到的问题是,每当主题包含单引号或双引号时,obj-c似乎都会失败

"\\$\\([a-zA-Z0-9_#-\\.'\"]+\\)"
从上面

$(test) <- success
$(.d-s3#_t) <- success 
$('test') <- fail
$("test) <- fail

同样的结果。它在其他语言平台上运行良好,因此它似乎确实是obj-c特定的

您需要转义所有双引号,例如:

[NSRegularExpression regularExpressionWithPattern:@"(\"bo-dy\")" ...
单引号不需要转义:

[NSRegularExpression regularExpressionWithPattern:@"\\('test'\\)" ...
请注意,我将转义
以匹配括号,而不是捕获组。这里是另一个快速的例子;这将匹配所有字符串:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"([$\\-\\(\\w\"'\\.\\)\\\\]*)" options:NSRegularExpressionCaseInsensitive | NSRegularExpressionAllowCommentsAndWhitespace error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:searchText options:0 range:NSMakeRange(0, [string length])];
结果:

$(body)
$('.body')
$("bo-dy")
$('test')\n
$(body)
$('.body')
$("bo-dy")
$(test)
$(.d-s3#_t)
$('test')
$("test)
$('test)
$('test')

如果您打印字符串
“\$\”([a-zA-Z0-9\\\\-\\\”]+\)“
,您会得到什么?
\$\([a-zA-Z0-9\\\\-”]+\)
,如果我添加标准的开始/结束定界符以获得
/\$\([a-zA-Z0-9\\\\\\-”+)/
,它在其他平台上工作,很抱歉,最好是完美链接
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"([$\\-\\(\\w\"'\\.\\)\\\\]*)" options:NSRegularExpressionCaseInsensitive | NSRegularExpressionAllowCommentsAndWhitespace error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:searchText options:0 range:NSMakeRange(0, [string length])];
$(body)
$('.body')
$("bo-dy")
$('test')\n
$(body)
$('.body')
$("bo-dy")
$(test)
$(.d-s3#_t)
$('test')
$("test)
$('test)
$('test')