【发布时间】:2018-06-23 18:15:24
【问题描述】:
我正在尝试制作一个匹配semantic version (SemVer) 2.0.0 的正则表达式。这是我的第一次尝试:
^(?'major'\d+)\.(?'minor'\d+)(?:\.(?'patch'\d+))?(?:-(?'preRelease'(?:(?'preReleaseId'[0-9A-Za-z-]+)\.?)+))?(?:\+(?'build'(?:(?'buildId'[0-9A-Za-z-]+)\.?)+))?$
这通过了我的冒烟测试,但是当我尝试将其设置为 NSRegularExpression 时,我得到了:
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=2048 "The value “^(?'major'\d+)\.(?'minor'\d+)(?:\.(?'patch'\d+))?(?:-(?'preRelease'(?:(?'preReleaseId'[0-9A-Za-z-]+)\.?)+))?(?:\+(?'build'(?:(?'buildId'[0-9A-Za-z-]+)\.?)+))?$” is invalid." UserInfo={NSInvalidValue=^(?'major'\d+)\.(?'minor'\d+)(?:\.(?'patch'\d+))?(?:-(?'preRelease'(?:(?'preReleaseId'[0-9A-Za-z-]+)\.?)+))?(?:\+(?'build'(?:(?'buildId'[0-9A-Za-z-]+)\.?)+))?$}: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-900.0.74.1/src/swift/stdlib/public/core/ErrorType.swift, line 181
为什么?我在网上找不到任何关于 NSRegularExpression 期望/接受的信息,所以我不知道我在这里做错了什么。
Swift 代码:
public static let regex = try! NSRegularExpression(pattern:
"^(?'major'\\d+)\\." +
"(?'minor'\\d+)" +
"(?:\\.(?'patch'\\d+))?" +
"(?:-(?'preRelease'(?:(?'preReleaseId'[0-9A-Za-z-]+)\\.?)+))?" +
"(?:\\+(?'build'(?:(?'buildId'[0-9A-Za-z-]+)\\.?)+))?$",
options: .caseInsensitive)
【问题讨论】:
-
显示您用于实例化
NSRegularExpression的代码 -
好的...它不应该透露任何特别的东西
标签: swift cocoa runtime-error nsregularexpression semantic-versioning