У меня есть регулярное выражение, которое я пытаюсь использовать в Swift для анализа значений цвета строки в форме «rgba (255, 255, 255, 1)»Regex in 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, когда речь идет о Swift? - Небольшой самодостаточный пример кода был бы чрезвычайно полезен. –
@MartinR потому что он использует NSRegularExpression и регулярные выражения в Swift vs. Obj-c - один к одному. – erickreutz
Общим фактором является структура Cocoa (Touch); ObjC _language_ не имеет к этому никакого отношения. –