2012-04-17 5 views
1

나는 처음 두 문자가 일부 목록에 있어야하고 다음 세 문자는 다른 목록에 있어야하는 5 자 문자열을 가지고 있습니다.정규 표현식을 사용하는 문자열에서 문자열 부분으로

정규 표현식으로 어떻게 유효성을 검사 할 수 있습니까?

예 : 처음 두 문자 {VBNET, CSNET, HTML)} 다음 세 문자

내 문자열 {BEGINNER, EXPERT, MEDIUM}에 대한

  • 목록에 대한

    • 목록 될 것 같습니다 VBBEG, CSBEG

      내 정규 표현식은 입력 문자열 처음 두 문자가 VB, CS, HT 중 하나 일 수 있으며 나머지도 이와 비슷해야 함을 발견해야합니다. this 같은

  • 답변

    1

    당신을위한 다음의 식 작업 (당신이 하드 코드 값을하지 않도록) 더 일반적인 경우에서와 : (^..)(.*$) 이 -의 첫 두 글자를 반환 첫 번째 그룹 및 두 번째 그룹의 나머지 글자.

    +0

    고마워요. 추출 된 처음 두 글자는 지정된 목록에서 단어의 처음 두 글자와 일치해야합니다. 이것에 대한 모든 스레드? 미리 감사드립니다 ... – Rupesh

    +0

    @Rupesh 목록 일치는 사용중인 프로그래밍 언어에 따라 다릅니다. –

    1

    뭔가 : (VB|CS|HT)(BEG|EXP|MED) 그것을해야

    ^(VB|CS|HT)(BEG|EXP|MED)$ 
    
    1

    이 조리법은 나를 위해 작동 :

    ^(VB|CS|HT)(BEG|EXP|MED)$ 
    
    0

    문자열이 이와 같이 잘 정의 된 경우 정규식이 필요하지 않습니다. 간단한 문자열 분할이 효과적입니다.

    예를 들어, 파이썬에서 우리는 말할 수있다 : 초등학교 문자열 연산 할 곳

    mystring = "HTEXP" 
    
    prefix = mystring[0:2] 
    suffix = mystring[2:5] 
    
    if (prefix in ['HT','CS','VB']) AND (suffix in ['BEG','MED','EXP']): 
        pass # valid! 
    else: 
        pass # not valid. :(
    

    정규식을 사용하지 마십시오.

    +0

    VB를 사용하고 있는데 정규식을 사용하는 것으로 끝납니다. – Rupesh

    +0

    @Rupesh :이 문제를 해결하기 위해 정규 표현식을 사용할 수 있습니다.이 경우 코드의 복잡성은 거의 같습니다. 그러나 필자의 일반적인 충고는 모든 것을 정규 표현식으로 사용하기 전에 신중하게 생각하는 것입니다. 종종 "평범한"문자열 메서드는 정상적으로 처리됩니다. –

    관련 문제