簡體   English   中英

Predicate中正則表達式中占位符用法的語法是什么?

[英]What is syntax for placeholder usage in regular expression in Predicate?

我想在正則表達式中指定我的值,我該怎么做?

我在做什么:

request.predicate = Predicate(format: "entityProperty MATCHES [c] '[^0123]%@'", myValue)

觀察結果,我可以說%@被解析為正則表達式字符串中的字符,而不是放置任何值

這是對帶謂詞的正則表達式使用的一些解釋 ,但沒有有關值的占位符的信息

您的解決方案適用於:

  1. myValue表示有效的正則表達式模式。
  2. 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或$ variable解釋為格式字符串中的文字,因此可以防止任何替換。

解析器基礎(謂詞編程指南)

(我使用NSPredicate作為Predicate在Xcode 8 beta 6中不可用。)

request.predicate = Predicate(format: "entityProperty MATCHES [c] '[^0123]\(myValue)'")

解:
代替%@占位符,使用字符串替換:“ prefixSomeText \\(myValue)suffixSomeText”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM