import Foundation
let pattern = #"\.\s[A-ZÐ-Я](.+)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"ÐеиÑключительные лицензионные права на 3.14 программное обеÑпечение. Fункциональные характериÑтики: ÐеиÑключительные права подразумевают под Ñобой право на иÑпользование программного обеÑпечениÑ, то еÑть Ñовершение любых дейÑтвий, ÑвÑзанных Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð² ÑоответÑтвии Ñ ÐµÐ³Ð¾ назначением и документацией. ÐеиÑключительные права на иÑпользование программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ предуÑматривать возможноÑть Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле модернизации вычиÑлительной техники, а также возможноÑть переноÑа программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ Ð¾Ð´Ð½Ð¾Ð¹ вычиÑлительной машины на другую. ТехничеÑкие характериÑтики: 1. Право Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ð¼ обеÑпечением Kaspersky Endpoint Security Ð´Ð»Ñ Ð±Ð¸Ð·Ð½ÐµÑа РаÑширенный Russian Edition (продление) - на 1 год 50шт. 2. Право Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ð¼ обеÑпечением Windows Professional 8.1 Russian Upgrade OLP A Gov (FQC - 08203) 6 шт. КачеÑтвенные характериÑтики: Передача неиÑключительных лицензионных прав на пользование программным обеÑпечением Kaspersky Endpoint Security Ð´Ð»Ñ Ð±Ð¸Ð·Ð½ÐµÑа РаÑширенный Russian Edition (продление) и Windows Professional 8.1 Russian Upgrade OLP A Gov (FQC - 08203) производитÑÑ Ð² ÑущеÑтвующую информационную инфраÑтруктуру Заказчика, поÑтроенную на базе программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð»Ð¸Ð½ÐµÐµÐº Microsoft, Kaspersky, (вÑледÑтвие чего Ñквивалент других торговых марок не допуÑкаетÑÑ Ð²Ð²Ð¸Ð´Ñƒ неÑоответÑÑ‚Ð²Ð¸Ñ Ñ Ñ€Ð°Ð½ÐµÐµ уÑтановленным программным обеÑпечением). Каждый ÑкземплÑÑ€ объекта закупки должен быть защищён от неÑанкционированного иÑпользованиÑ. При предоÑтавлении объекта закупки ПоÑтавщик гарантирует Заказчику возможноÑть предоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚ÐµÑ…Ð½Ð¸Ñ‡ÐµÑкой поддержки Ñо Ñтороны Ð¿Ñ€Ð°Ð²Ð¾Ð¾Ð±Ð»Ð°Ð´Ð°Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ обеÑпечениÑ, в том чиÑле в форме конÑультативной помощи по телефону и Ñлектронной почте по вопроÑам уÑтановки и ÑкÑплуатации программного обеÑпечениÑ, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸ÑŽ ошибок в работе программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸ выработке Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ их уÑтранению. КоличеÑтво: 56 шт."#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression