正则表达式支持Swift iOS

正则表达式(regex)làdùngcácmẫu模式tìmkiếmchuỗiđểtìmkiếmhoặcthaythếcácchuỗi字符串NSRegularExpression

  1. Cáctoántửcơbản
    –Kiểuboolean或dùng:|
    vídụ:cat | dog =>khớpvớikếtquảcó“ cat”hoặc“ dog”
    –Kiểugroup(nhóm)dùng:()
    vídụ:2(0 | 1)8 => 208,218
    –Kiểuđịnhlượng
    :khôngcóhoặc1lünxuấthiệntrướcphầntửđó,vídụ:abc?d => abcd,abd
    * :khôngcóhoặcnhiềulnnxuấthiệntrướcphầntửđó,vídụ:abc * d => abd,abcd,abccd,abcccd
    + :khôngcóhoặcnhiềulầnxuấthiệntrướcphầntửđó,vídụ:abc + d => abcd,abccd,abcccd
    {n} :sốlầnxuấthiện,vídụ:abc {3} d => abcccd
    {min,} :最小化:abc {2,} => abccd,abcccd,abccccd
    {min,max} :sốlốnxuấthiệntừmintớimax:abc {1,2,3} => abcd,abccd,abcccd
    ^ :Bắtđầucủakítự,Vídụ:^ A => An B
    $ :Cuốicùngcủakítự,vídụ:$ e =>一个苹果
    :kítựbấtkì,vídụ:ab => acb,a1b,amb
    [] :cáckítựđơntrongngoặcvuông,vídụ:[abc] d =>“ ad”,“ bd”,“ cd”,cóthểviếttt t [ac] d
    [^] :ngoạitrừcáckítựtrongngoặcvuông,vídụ:[^ ac] =>“ d”,“ e”

2. Mttsốpatternnhómchuỗi

[A-Za-z0-9_]字母数字字符hoặccóthểdùng\ w
[^A-Za-z0-9_]非单词字符hoặccóthểdùng\ W
[A-Za-z]字母字符hoặccóthểdùng\ a
[0-9]位数\ d
[^0-9]非数字\ d
[az]小写字母hoặccóthểdùng\ l
[AZ]大写字母hoặccóthểdùng\ u
– \ b:chuỗitìmkiếmđượcngắtbởi1khoảngtrắnghay kophảikítự
– \ s:sẽkhớpvớikhoảngtrắng,1个标签,1dòngmới

维德:
– abc \ w:sẽkhớpvớiabca,abc_nhưngkovớiabc〜
– \ d \ d?:\ d \ d:吉安5:45,07:50
– abc \ b:sẽkhớpvớiabc def,abc!
– abc \ s:sẽkhớpvới123 abc def

Tìmkiếmchuỗi

Vídụ:通过电子邮件发送模式:
\\ b([az])\\。([az] {2,})@([az] +)\\。com \\。vn \\ b
—Với \\ b :đầuvàcuốichỉra tachỉlấychuỗiđượcngắtkhôngdínhliềnvớicáckítựkhác
– Partternđượcbiểudiễn:[1kítự]。[Ítnhất2kítự] @ [ítnhất1kítự] .com.vn

DùnghàmNSRegularExpressiontruyềnvào1个terntern,sauđógọihàm 匹配 đểtrảvề [NSTextCheckingResult] ,vàtaduyệtmảngnàylấyra rangerồi得到子串đượctìmthấy。

  func matchsRegex(用于正则表达式:字符串,文本中的字符串:)-> [字符串] { 
做{
让regex =试试NSRegularExpression (模式:regex,options:.caseInsensitive)
让结果=正则表达式。 匹配项 (在:文本,
范围:NSRange(位置:0,长度:text.length))
让finalResult = results.map {
(文本为NSString).substring(with:$ 0。range)
}
返回finalResult
}捕获让错误{
打印(“错误正则表达式:\(error.localizedDescription)”)
返回[]
}
}
 让allMatches = MatchesRegex(for:“ \\ b([az])\\。([az] {2,})@([az] +)\\。com \\。vn \\ b ”,在: “ v.vu @ gmail.com.vn,vi.vu @ hotmail.com,v.vub @ yahoo.com.vn,v.vub @ yahoo.com.vnq,v.vu1 @ gmail.com.vn”) 
  //结果 
v.vu@gmail.com.vn
v.vub@yahoo.com.vn

1vídụkhác:lấytagvớiđiềukiều[ínhht1khoảngtrắng]#[ítnhất1kítự]

  let allMatches = matchRegex(for:“ \\ s +(#[a-z0-9] +) ”,in:“有趣的时刻#funny ... #beach #resort #pinic#fun#danang”) 
  //结果 
#滑稽
#海滩
#采取
#pinic
#乐趣

Thaythếchuỗitìmđược

用模板truyềnvàođịnhdạngmàta sẽmuốnchuyểnđổi,ứngvới$ 1,$ 2,$ 3…làcácnhómtrong匹配NSRegularExpression,vớithamsố。

  func replaceRegex(用于正则表达式:字符串,在文本中:NSMutableString,临时字符:String)->字符串{ 
让正则表达式=尝试? NSRegularExpression (模式:regex,选项:.caseInsensitive)
正则表达式? replaceMatches (in:text,选项:.reportProgress,range:NSRange(location:0,length:text.length), withTemplate :temp)
以字符串形式返回文本
}
  //Vídụ:Lấyrangàythángnămvàchènchữvàogiữa。 
让strDate:NSMutableString =“ 04/05/2000”
let date = replaceRegex(for:“ ^(0 [1-9] | 1 [012])[-/。](0 [1-9] | [12] [0-9] | 3 [01])[ -/。](19 | 20)\\ d \\ d $“,格式:strDate,temp:“日:$ 1月:$ 2年:$ 3”)
  // =>日期:04个月:05年份:20 

视频:chúngtamuốnbỏkhoảngtrắngbêntráivàphảicủachuỗi

  let trim = replaceRegex(for:“(?:^ \\ s +)|(?:\\ s + $)”,in:“ Nguyen Van A”,temp:“ $ 1”) 
  =>'阮文A' 

Mìnhđãtrìnhbàyvềcơbảnsụdụngregex trong swift,regexcórấtnhiềuthứthúvịvàrộng,cácbạntìmhiểuthêmnhé,mìnhsiviếttiếpvào