我有一個正在嘗試在Swift中使用的正則表達式以「rgba(255,255,255,1)」的形式解析出字符串的顏色值「Swift中的正則表達式在逃避反斜槓時不起作用
我的正則表達式的字符串是這樣的:
^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$
你可以看到它在這裏工作:
當我逃避反斜槓並嘗試使用它與NSRegularExpression
它不再匹配給定的字符串。
^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$
有什麼我做錯了嗎?
代碼示例:
import Foundation
var pattern = "^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$"
var string = "rgba(255, 234, 243, 1)"
var regex = NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions(0), error: nil)
regex.numberOfMatchesInString(string, options: nil, range: NSMakeRange(0, countElements(string))) // Yields 1. Should yield 4
爲什麼問題被打上Objective-C的時候的問題是關於斯威夫特? - 一個小型自包含代碼示例將非常有幫助。 – 2014-10-09 21:02:33
@MartinR因爲它使用NSRegularExpression而Swift和Obj-c中的正則表達式是一對一的。 – erickreutz 2014-10-09 21:03:51
共同的因素是可可(Touch)框架; ObjC _language_與此無關。 – 2014-10-09 21:05:56