2012-06-23 3 views
2

정규 표현식을 Notepad ++에서 사용하고 아래 두 가지 데이터 예제에서 패턴과 일치하는 데이터 행을 찾으려면 내가 제공 한 것 이외의 다른 표현식을 사용할 수 있습니까?메모장 + +를 사용하여 샘플 코드에 대한 정규식 shorcut가 있습니까?

상승 0640 1933 (:) 12H에서 52m의 58s 세트 - 2m 06S 106

상승 0,640 1,931 (:) 12H 5,000의 51S 세트 - 2m 07s 106

상승 [0-9] [0-9 ] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] (:) [0-9] [0-9] h [0-9] ] [0-9] m [0-9] [0-9] s- [0-9] m [0-9] [0-9] s [0-9] [0-9] [0-9] ]

답변

0

모든 의견을 주셔서 감사합니다. 코드를 작성하는 데 더 짧은 방법이나 더 효율적인 방법을 요청했지만 그걸 가지고 놀고 나서는 실제로 한 자리 숫자와 두 자리 숫자를 처리 할 수있는식이 필요했습니다. 시간. 아래는 내가 작성한 데이터이며 제공된 데이터로 작동하지만 다시 한번 ... 감사합니다!

상승 \ s [0-9] + \ sset \ s [0-9] + \ s \ (\ : \) \ s [0-9] + h \ s [0-9] + m \ s [0-9] + s s- s [0-9] + m s [0-9] + s s [0-9] +

상승 0640 세트 1933 (:) 12h 52m 58s - 1,931 (:) 12H 5,000의 51S 세트 0,640 2m 07s 3

상승 - - 상승 0640 99

1931 설정 2m 07s (2m 06S 106

상승 640 1931 (:) 12H 5,000의 1 초를 설정 :) 12h 9m 51s - 2m 07s 106

상승 0640 세트 931 (:) 9h 50m 51s - 2m 07s 106

1

사용자가 지정한 원래 정규 표현식에서 계속 단축 할 수 있습니다. 여기

첫 번째 압축입니다 :이 더 단축 될 수있어

rise \d{4}\sset\s\d{4}\s\(:\)\s\d{2}h\s\d{2}m\s\d{2}s\s-\s\dm\s\d{1,}s\s\d{1,} 

하지만 설명은 : 메모장 ++ \ d 개를 지원하지 않기 때문에

\d{4} --- Matches 4 digits 
\s --- Matches space 
\d{2}[h,m,s]+ --- Matches 2digits followed by h, m, s 
\d{1,} --- matches one or more of the digit pattern 

{4}

rise \d+\sset\s\d+\s\(:\)\s[\d,\s,h,m,s]+-\s\dm\s\d+s\s\d+ 
+1

'\ d +'vs'\ d {1,}'을 사용하지 않는 이유는 무엇입니까? (나는 전반적으로 메모장을 볼 때 ++가 분명히'{n}'을하지 않는다는 것을 뜻합니다) –

+0

@Mateusz Kowalczyk : 주석을보고 그냥 체크 아웃했습니다. 예, – pyfunc

+0

피드백을 보내 주셔서 감사합니다. –

1

일반 정규식과 비슷하다면 여기 정규식과 동일한 짧은 버전이 있습니다 : rise \d{4} set \d{4} \(:\) \d\dh \d\dm \d\ds - \dm \d\ds \d{3} 괄호를 이스케이프하는 것을 잊었습니다.

당신은 물론 this very handy website

에서 다양한 정규식 패턴을 테스트 할 수 있습니다, 그것은 짧게 할 수 있지만 대부분의 정확성에 고통을 줄 당신은 많은 양의 데이터가있는 경우, 당신이 잘못된 반응을 얻을 수 있습니다. 정확성을 잃는 간단한 예는 rise \d{4} set \d{4} \(:\) [0-9hms -]+? \d{3}입니다.

데이터 집합과 가독성을 희생할지 여부는 사용자의 결정에 달려 있습니다. 그래도 허용되는 항목으로 실제로 밀어 넣기는하지만 여전히 [a-z0-9 ]+? \(:\) [0-9hms -]+? \d{3} 과 일치합니다.

귀하의 결정은 귀하의 것입니다.

+1

+1에서 성공적으로 테스트되었지만 notepad ++는 번호가 매겨진 반복을 지원하지 않는 것 같습니다. \ d + 또는 \ d \ d를 사용해야합니다. \ d \ d 대신 \ d {4} –

+0

메모장 ++는 버전 6의 번호 반복을 확실히 지원합니다. 오늘은 Notepad ++ v6.1.2에서 성공적으로 테스트되었습니다. – BunjiquoBianco

0

내가 메모장 + +하지만 적절한 정규 표현식을 사용하는 가정을 사용하지 않는,이 작품 :

rise \d{4} set \d{4} \(:\) \d{2}h \d{2}m \d{2}s - \dm \d{2}s \d{3} 

당신은 정말 "(:)"하지만, 그래서 이것은 것입니다 일치 할 필요는 없습니다 좀 더 간단 : 당신이 (\ 1 \ 2 등)을 역 참조에 대한 일치하는 번호를 캡처 할 경우

rise \d{4} set \d{4}.*\d{2}h \d{2}m \d{2}s - \dm \d{2}s \d{3} 

을 또는 다음 번호 주위에 괄호를 사용 :

rise (\d{4}) set (\d{4}).*(\d{2})h (\d{2})m (\d{2})s - (\d)m (\d{2})s (\d{3}) 

그리고 당신이 정말로 당신의 데이터를 신뢰하는 경우, 당신은 단지 "*"와 숫자의 번호 받아 들일 수 :

rise (\d*) set (\d*) .* (\d*)h (\d*)m (\d*)s - (\d*)m (\d*)s (\d*) 

(즉, 마지막 예제에서, 나는 주위를 다시 공백을 넣어 주 "를. "그렇지 않기 때문에". "은"h "까지의 자릿수와 일치합니다.)

관련 문제