2014-10-29 1 views
4

이것은 Swift의 정규 표현식에 대한 질문입니다. 여기 Swift regex - 일치하는 그룹을 추출하는 방법

간단한 매치 문이다 : 나는 그룹화에 대한 검색과 일치하지만 아무것도 작업을 수행하는 방법을 언급 다양한 자습서를 발견

if Regex("\\w{4}").test("ABCD") { 
    println("matches pattern") 
} 

하지만 난 3 편지 추출하고 싶다면 :

if Regex("\\w{2}(\\w)\\w").text("REGX") { 
    print("Found a match with \$1") 
} 

일치하는 그룹을 인쇄하는 올바른 구문은 무엇입니까? 더 구체적으로

또는

- 당신은 NSRegularExpression을 사용하는 방법을 나는 2014-10-29T20:44:00

+0

그룹을 건너 뛰고 뒤를보고'(? <= \ w {2}) \ w (? = \ w)'를 미리 볼 수 있습니다. –

+0

@DanielGimenez는 OP가 '2014-10-29T20 : 44 : 00'의'2044 '를 원하기 때문에이 경우에는 (여분의 클렌징없이) 작동하지 않습니다. – Sam

+0

@Sam 질문이 내 게시물 뒤에 편집되었습니다 –

답변

12

에서 2044을 추출합니다.

var pattern = ".+T(\\d\\d):(\\d\\d).+" 
var string = "2014-10-29T20:44:00" 

var error: NSError? = nil 

var regex = NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.DotMatchesLineSeparators, error: &error) 


var result = regex?.stringByReplacingMatchesInString(string, options: nil, range: NSRange(location:0, 
    length:countElements(string)), withTemplate: "$1$2") 
그래도 난, 정규 표현식없이이 작업을 수행하는 경향 것

:

var charSet = NSCharacterSet(charactersInString: "T:") 

var array = 
string.componentsSeparatedByCharactersInSet(charSet) 

var result2 = 
"\(array[1])\(array[2])" 

이것은 T 또는 중 하나에 의해 분리 된 문자열의 배열에 날짜 문자열을 나누기 : 내가 시간과 분을 얻을 반환되는 배열의 두 번째 요소와 세 번째 요소

+0

문자열이 "PT1H22M33S"와 같은 경우 i-e hr/min/sec의 시간을 얻으려면 어떻게해야합니까? – iMemon

관련 문제