2012-10-01 5 views
13

내가 정규식에 새로운 오전 모든 문자와 일치하고 나는 다음과 같은 텍스트와 일치 무언가 마련하려고 :정규 표현식은

ABC : (Z) 1999년 1월 2일 \ n

노트 ''

  • 사이 제로, 하나 이상의 공백이있을 수있다 : "ABC"

    • 텍스트 항상 시작되며 (z). 의
    • 변형 (z)도 가능 - (ZZ) (zzzzzz입니다) 등등하지만 표로 항상 비 숫자 문자 "()"
    • 사이 제로, 하나 이상의 공간이있을 수있다 (Z)와 1월
    • 일월 정말 내가 할 수있는 정규식이 있는지 알고 싶습니다 1월 1 월, 2, 어떤 형식 등
    • 날짜 couldbe 수 및/그래서 그것의 일부 같은 다른 텍스트를 포함하거나 포함하지 않을 수있다 '(z)'와 '\ n'사이에있는 모든 항목을 캡처하는 데 사용

    도움을 주시면 대단히 감사하겠습니다! 주셔서 감사합니다

  • +2

    지금까지 시도 무엇을 누워 다음의 사본을 유지하는 것이 좋습니다? 그것이하는 일은 당신이 원하는 것과는 다른 것입니까? – octern

    +0

    참고 : 정규 표현식을 테스트하기 위해 regexplanet.com/advanced/java/index.html을 사용하고 있습니다. 미안하지만 이전에 언급 했어야했습니다. 그래서 샘플 문자열 "ABC : (z) Feb 2 1988 \ n".. 2 그룹에 대한 내 결과는 "(z) Feb 2 1988" – chapstick

    답변

    26

    다음과 같은 작업을해야합니다 :

    ABC: *\([a-zA-Z]+\) *(.+) 
    

    설명 :

    ABC:   # match literal characters 'ABC:' 
    *    # zero or more spaces 
    \([a-zA-Z]+\) # one or more letters inside of parentheses 
    *    # zero or more spaces 
    (.+)   # capture one or more of any character (except newlines) 
    

    , 아래의 의견에 따라 원하는 그룹을 얻기 위해 사용할 수있는 다음

    (ABC:) *(\([a-zA-Z]+\).+) 
    
    +0

    입니다. 표현을 주셔서 감사합니다 아래 deltree에 대한 내 코멘트를 참조하십시오 – chapstick

    +0

    @chapstick - 그룹 2가 괄호에서 줄 끝까지 일치해야하는 다른 버전이 추가되었습니다. –

    +0

    고마워요! – chapstick

    0

    이것은 귀하의 요구 사항을 충족시켜야합니다. 여기

    ABC:\s*(\(\D+\)\s*.*?)\\n

    http://www.regexplanet.com/cookbook/ahJzfnJlZ2V4cGxhbmV0LWhyZHNyDgsSBlJlY2lwZRiEjiUM/index.html

    학습과 정규 표현식에 읽는 몇 가지 테스트를하다 : 당신이 사용하고있는 정확한 정규식 구현을 모른 채 http://www.regular-expressions.info/characters.html

    +0

    답변 해 주셔서 감사합니다. http://www.regexplanet.com/advanced/java/index.html을 사용하여 정규 표현식을 테스트하고 있습니다. 따라서 샘플 문자열 "ABC : (z) Feb 2 1988 \ n"을 사용하십시오. 그룹 2에 대한 나의 결과는 "(z) Feb 2 1988"이어야합니다 ... 위 식 중 하나를 사용하여 얻을 수 없습니다. : – chapstick

    +0

    @chapstick' '(z)'와 '\ n' '사이에서 발견되는 모든 것을 캡처하여 그룹에서 원하는 (z) 및 \ n 왜 그룹 2입니까? – deltree

    +0

    나는 (z)를 원하지만 '\ n'을 제외하고는 사물만을 원한다. 나는 의도적으로 그룹 2의 이유를 자세히 설명하지 않았다. 그룹 2의 값을 사용하여 다른 처리를 수행 할 것이다. – chapstick

    4

    , 난 단지 일반적인 조언을 제공 할 수 있습니다 .

    ABC: (z) jan 02 1999 \n

    • 에 맞게 우선 보면 (내가 그와 같은 펄 될 것입니다 구문은 내가, 일부 언어는 조정이 필요합니다 알고있는 것은) ABC입니다 : 그래서 우리의 정규식을 사용하여 /ABC:/
    • 입니다 당신은 ABC가 항상 문자열의 시작 부분에 있기 때문에 /^ABC/은 ABC가 문자열의 시작에 있도록 보장 할 것입니다.

    • 공백을 \s (대소 문자 구분) 지시문과 일치시킬 수 있습니다.모든 지시하면 당신은 예약 된 캐릭터로 ()의 사용을 피할 필요가

    • (* 또는 0 또는 그 이상)의 하나 또는 그 이상의 +와 일치시킬 수 있습니다. 그래서 \(\)

    • 당신은 당신은 모든 .*와 아무것도 일치시킬 수 있습니다 .

    • 와 비 공백이나 개행 문자와 일치 할 수 있지만 너무 욕심없는 당신이있어주의 모든 것을 포착 할 필요가있다.

    그래서 내가 물어 본 내용을 캡처하십시오.

    이 ABC로 시작 :

    가 가지고 일부 공백이있다 (

    가 가지고 일부 문자가) 나는과 같이 /^ABC:\s*\(.+?\)\s*(.+)$/

    사용합니다

    에는 공백이있을 수 있습니다.

    다음 줄 끝까지 모든 내용을 캡처합니다 ($).

    내가보기 엔에 대한 http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/