我想在正则表达式中指定我的值,我该怎么做?
我在做什么:
request.predicate = Predicate(format: "entityProperty MATCHES [c] '[^0123]%@'", myValue)
观察结果,我可以说%@被解析为正则表达式字符串中的字符,没有放置任何值而不是它
以下是关于使用谓词的正则表达式的一些explanation,但没有关于值的占位符的信息
答案 0 :(得分:1)
您的解决方案适用于:
myValue
表示有效的正则表达式模式。myValue
可能不包含单引号('
)。如果myValue
可能包含单引号,则可以使用:
request.predicate = NSPredicate(format: "entityProperty MATCHES [c] %@", "[^1234]" + myValue)
如果myValue
不是正则表达式模式并且可能包含一些元字符,您可能需要编写如下内容:
request.predicate = NSPredicate(format: "entityProperty MATCHES [c] %@", "[^1234]"+NSRegularExpression.escapedPattern(for: myValue))
无论如何,你需要记住:
单引号或双引号变量(或替换变量字符串) 导致%@,%K或$变量被解释为。中的文字 格式化字符串,以防止任何替换。
Parser Basics (Predicate Programming Guide)
(我使用NSPredicate
因为Predicate
在Xcode 8 beta 6中不可用。)
答案 1 :(得分:0)
request.predicate = Predicate(format: "entityProperty MATCHES [c] '[^0123]\(myValue)'")
<强>解决方案:强>
而不是%@
占位符使用字符串替换:
&#34; prefixSomeText \(myvalue的)suffixSomeText&#34;