2011-05-10 4 views
0

[이것은 많이 편집 된 버전입니다. 이 질문의 이전 버전을 무시하십시오.]모든 정규 법률 번호를 식별하는 정규식

정교한 정규 표현식을 사용하는 작은 파이썬 스크립트는 provided by eyquem으로 문자열의 숫자를 식별하고 위생적으로 처리합니다. 테스트 결과에는 50 개가 넘는 샘플이 포함되어 있습니다. 여기서는 반복하지 않겠습니다.

질문은 그 정규 표현식을 조정하거나 새 표현식을 제공하여 쉼표가 더 위생적으로 취급 될 수 있습니까?

특히, 다음의 4 가지 테스트 입력이 관련 출력을 생성하고 있음을보고 싶습니다.

  • '는 4,8.3,5'-> '4'8.3 '5'
  • '44,22,333,888'- 333,888> '44'을 '22 '####, 즉 44 주 22는 결코 하나의 숫자가 아닙니다.
  • '11,333e22,444'- '11, 333e22 ''444 '#### 11,333은 e22 앞에 허용되지만 22,444는 그 뒤에 허용되지 않습니다.
  • '1,999 명이 코드 "i + = 1999; 의미가 분명하고 1999 킬로바이트 미만의 추가 메모리 소비로 이어질 가능성이 있습니다. 그러나 1, 999 및 1999 KB 디스크 공간의 증가는 이상적입니다. 특히 1999 년이었고 1,999 달러가 넘는 회사와 함께 작업하는 것이 좋습니다. '1999' '1999' '1999' '1999 1999' '1,999'
+0

몇 가지 영감을 찾을 수 있습니다 http://regexlib.com/DisplayPatterns.aspx?cattabindex=2&categoryId=3 –

+0

@Fredrik, 그 링크에 감사드립니다. 유용한 리소스이지만, 입력 및 원하는 출력을 입력하여 검색하는 더 좋은 방법이 있었으면 좋겠다. 그러면 검색 엔진이 제출 된 정규식 중 어느 것이 귀하의 기준을 충족하는지 식별합니다. –

답변

0

모든 정보에도 불구하고 게시글이 실제로 모호합니다. 처음에는 질문하지 않았습니다. 원하는게 뭐지?

가능한 모든 일치 항목을 찾는 방법을 묻는 중입니까? 펄에서는

local our @matches; 
/(...)(?{ push @matches, $1 })(?!)/ 

(?!) 일치하지 않을 수 있습니다, 그래서 다른 일치를 찾기 위해 역 추적하기 위해 정규식 엔진을 야기하지만, 코드 블록이 그 일을하기 전에 발견 한 짓을 절약 할 수 있습니다.

일치하는 항목을 찾으려면 다음과 같이 간단히 해결할 수 있습니다. 옵션 1은 항상 일치하는 옵션 2와 일치하기 때문에 옵션 2를 찾지 마십시오.

+0

질문을 명확하게 편집하기 위해 편집했습니다. 당신은 지금 그것이 무엇을 묻는지를 이해합니까? –

+0

나는 질문을 다시 편집했다. 이제는 훨씬 더 많은 것이되었고 정규식이 더 유용 할 수 있도록 요구 사항이 조정되었습니다. –

관련 문제