iOS Swift && Objective-C

NSRegularExpression

2016-09-29  本文已影响311人  Laughingg
extension NSRegularExpression {
    public struct Options : OptionSet {
        public init(rawValue: UInt)
        
        // 不区分大小写
        public static var caseInsensitive: NSRegularExpression.Options { get }
        // 忽略空格和# -
        public static var allowCommentsAndWhitespace: NSRegularExpression.Options { get }

        // 整体化
        public static var ignoreMetacharacters: NSRegularExpression.Options { get }

        // 匹配任何字符,包括行分隔符
        public static var dotMatchesLineSeparators: NSRegularExpression.Options { get }

        // 允许^和$在匹配的开始和结束行
        public static var anchorsMatchLines: NSRegularExpression.Options { get }

        // (查找范围为整个的话无效)
        public static var useUnixLineSeparators: NSRegularExpression.Options { get }

        // (查找范围为整个的话无效)
        public static var useUnicodeWordBoundaries: NSRegularExpression.Options { get }
    }


    public struct MatchingOptions : OptionSet {

        public init(rawValue: UInt)

        
        public static var reportProgress: NSRegularExpression.MatchingOptions { get } /* Call the block periodically during long-running match operations. */

        public static var reportCompletion: NSRegularExpression.MatchingOptions { get } /* Call the block once after the completion of any matching. */

        public static var anchored: NSRegularExpression.MatchingOptions { get } /* Limit matches to those at the start of the search range. */

        public static var withTransparentBounds: NSRegularExpression.MatchingOptions { get } /* Allow matching to look beyond the bounds of the search range. */

        public static var withoutAnchoringBounds: NSRegularExpression.MatchingOptions { get } /* Prevent ^ and $ from automatically matching the beginning and end of the search range. */
    }

    
    public struct MatchingFlags : OptionSet {

        public init(rawValue: UInt)

        
        public static var progress: NSRegularExpression.MatchingFlags { get } /* Set when the block is called to report progress during a long-running match operation. */

        public static var completed: NSRegularExpression.MatchingFlags { get } /* Set when the block is called after completion of any matching. */

        public static var hitEnd: NSRegularExpression.MatchingFlags { get } /* Set when the current match operation reached the end of the search range. */

        public static var requiredEnd: NSRegularExpression.MatchingFlags { get } /* Set when the current match depended on the location of the end of the search range. */

        public static var internalError: NSRegularExpression.MatchingFlags { get } /* Set when matching failed due to an internal error. */
    }
}
@available(OSX 10.7, *)
open class NSRegularExpression : NSObject, NSCopying, NSSecureCoding {
    // 用来创建正则表达式对象
    public init(pattern: String, options: NSRegularExpression.Options = []) throws

    // 匹配的模式字符串 
    open var pattern: String { get }

    open var options: NSRegularExpression.Options { get }

    open var numberOfCaptureGroups: Int { get }

    open class func escapedPattern(for string: String) -> String
}

匹配的方法

extension NSRegularExpression {
    
    open func enumerateMatches(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange, using block: (NSTextCheckingResult?, NSRegularExpression.MatchingFlags, UnsafeMutablePointer<ObjCBool>) -> Swift.Void)

    // 返回所有匹配结果的集合(适合,从一段字符串中提取我们想要匹配的所有数据)
    open func matches(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange) -> [NSTextCheckingResult]

    // 返回正确匹配的个数(通过等于0,来验证邮箱,电话什么的,代替NSPredicate)
    open func numberOfMatches(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange) -> Int

    //  返回第一个匹配的结果。注意,匹配的结果保存在  NSTextCheckingResult 类型中
    open func firstMatch(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange) -> NSTextCheckingResult?
   // 返回第一个正确匹配结果字符串的NSRange
    open func rangeOfFirstMatch(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange) -> NSRange
}

替换处理

extension NSRegularExpression {

    open func stringByReplacingMatches(in string: String, options: NSRegularExpression.MatchingOptions = [], range: NSRange, withTemplate templ: String) -> String

    open func replaceMatches(in string: NSMutableString, options: NSRegularExpression.MatchingOptions = [], range: NSRange, withTemplate templ: String) -> Int

    
   
    open func replacementString(for result: NSTextCheckingResult, in string: String, offset: Int, template templ: String) -> String

    
    
    open class func escapedTemplate(for string: String) -> String
}



数据探测

@available(OSX 10.7, *)
open class NSDataDetector : NSRegularExpression {

    
    public init(types checkingTypes: NSTextCheckingTypes) throws

    
    open var checkingTypes: NSTextCheckingTypes { get }
}

上一篇下一篇

猜你喜欢

热点阅读