Имам този реге:
([^ trn[{(-])?"(?(1)|(?=s | sb))
със следното заместване:
$1’
Това изглежда работи в Perl. Като се има предвид фраза като „Мините на цар Соломон“, тя ще го промени King Solomon’s Mines
, но хвърля EXC_BAD_ACCESS
грешка като NSRegularExpression
. Този тестов пакет предполага, че синтаксисът е валиден в php и Python, но не и в Javascript, и че (?(1)
част е виновникът.
Примерен код Swift:
let string = "King Solomon"s Mines"
var anError: NSError? = nil
let pattern = "([^\ \t\r\n\[\{\(\-])?"(?(1)|(?=\s | s\b))"
let regex = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &anError)
let range = NSMakeRange(0, countElements(string))
let template = "$1’"
let newString = regex.stringByReplacingMatchesInString(string, options: nil, range: range, withTemplate: template)
Най- let regex
декларация е мястото, където детската площадка ще получи грешка в лошия достъп. Трябва ли да променям изречението, за да го използвам в Swift?
(Редактиране: забравих да поставям скритите за обратната наклонена черта. Имах това в моя код.)
Отговори:
0 за отговор № 1Не мисля, че е условен тест (?(1)...|...)
е налице, но всъщност не е проблем, тъй като не е необходим. Този модел прави същото:
let pattern = ""(?:(?<=[^\s[{(-]")|(?=\s | s\b))"
Забележка: ако не работи, опитайте се да избегнете двойното отваряне на квадратната скоба в класа на героите.