思路來(lái)源:
開發(fā)中遇到復(fù)雜的字符匹配,正則表達(dá)式是最常用的實(shí)現(xiàn)方式,每次從頭寫一堆重復(fù)/相似的代碼就很令人煩躁的,隨想重構(gòu)一下使用方法,方便以后使用,最終一行調(diào)用即可;
//定義常見匹配模式
public extension NSRegularExpression{
///正則匹配模式
enum Pattern: String {
///漢字匹配表達(dá)式
case hanzi = "[\\u4E00-\\u9FA5]+"
///非漢字匹配表達(dá)式
case nonHanzi = "[^\\u4E00-\\u9FA5]+"
///英文字母匹配表達(dá)式
case alphabet = "[a-zA-Z]+"
///非英文字母匹配表達(dá)式
case nonAlphabet = "[^a-zA-Z]+"
///數(shù)字匹配表達(dá)式
case number = "[0-9]+"
///非數(shù)字匹配表達(dá)式
case nonNumber = "[^0-9]+"
///浮點(diǎn)數(shù)匹配表達(dá)式
case float = "[0-9.]+"
///非浮點(diǎn)數(shù)匹配表達(dá)式
case nonFloat = "[^0-9.]+"
}
}
Example
核心方法 matchTuple 返回元祖(NSRange,String)數(shù)組;
let input = "My name is 泰勒 88.8, My name is 斯威夫特 99.9"
let tuples = NSRegularExpression.matchTuple(NSRegularExpression.Pattern.alphabet.rawValue, input: input)
DDLog(tuples)//[({0, 2}, "My"), ({3, 4}, "name"), ({8, 2}, "is"), ({20, 2}, "My"), ({23, 4}, "name"), ({28, 2}, "is")]
let dic = NSRegularExpression.matchDic(NSRegularExpression.Pattern.alphabet.rawValue, input: input)
DDLog(dic)// ["{28, 2}": "is", "{23, 4}": "name", "{8, 2}": "is", "{0, 2}": "My", "{3, 4}": "name", "{20, 2}": "My"]
///匹配漢字
let result = NSRegularExpression.matchTuple2(.hanzi, input: input)
//**[({11, 2}, "泰勒"), ({31, 4}, "斯威夫特")]**
///匹配非漢字
let result1 = NSRegularExpression.matchTuple2(.nonHanzi, input: input)
///匹配數(shù)字
let result2 = NSRegularExpression.matchTuple2(.number, input: input)
///匹配非數(shù)字
let result3 = NSRegularExpression.matchTuple2(.nonNumber, input: input)
///匹配浮點(diǎn)數(shù)字
let result4 = NSRegularExpression.matchTuple2(.float, input: input)
///匹配非浮點(diǎn)數(shù)字
let result5 = NSRegularExpression.matchTuple2(.nonFloat, input: input)
///匹配大小寫字母
let result6 = NSRegularExpression.matchTuple2(.alphabet, input: input)
///匹配非大小寫字母
let result7 = NSRegularExpression.matchTuple2(.nonAlphabet, input: input)
DDLog(result)
//**[({11, 2}, "泰勒"), ({31, 4}, "斯威夫特")]**
DDLog(result1)
//**[({0, 11}, "My name is "), ({13, 18}, " 88.8, My name is "), ({35, 5}, " 99.9")]**
DDLog(result2)
//**[({14, 2}, "88"), ({17, 1}, "8"), ({36, 2}, "99"), ({39, 1}, "9")]**
DDLog(result3)
//**[({0, 14}, "My name is 泰勒 "), ({16, 1}, "."), ({18, 18}, ", My name is 斯威夫特 "), ({38, 1}, ".")]**
DDLog(result4)
//**[({14, 4}, "88.8"), ({36, 4}, "99.9")]**
DDLog(result5)
//**[({0, 14}, "My name is 泰勒 "), ({18, 18}, ", My name is 斯威夫特 ")]**
DDLog(result6)
//**[({0, 2}, "My"), ({3, 4}, "name"), ({8, 2}, "is"), ({20, 2}, "My"), ({23, 4}, "name"), ({28, 2}, "is")]**
DDLog(result7)
//**[({2, 1}, " "), ({7, 1}, " "), ({10, 10}, " 泰勒 88.8, "), ({22, 1}, " "), ({27, 1}, " "), ({30, 10}, " 斯威夫特 99.9")]**