2012-05-09 7 views
0

나는이이 샘플에는 어떤 정규식을 사용해야합니까?

hdisk10     128000   200B75Y4191001707210790003IBMfcp 
hdisk11     128000   200B75Y4191001807210790003IBMfcp 
hdisk13     128000   200B75Y4191001A07210790003IBMfcp 
hdisk14     128000   200B75Y4191001B07210790003IBMfcp 
hdisk15     128000   200B75Y4191001C07210790003IBMfcp 
hdisk16     128000   200B75Y4191001D07210790003IBMfcp 
hdisk17     128000   200B75Y4191001E07210790003IBMfcp 
hdisk18     128000   200B75Y4191001F07210790003IBMfcp 
hdisk19     128000   200B75Y4191002007210790003IBMfcp 

같은 명령 출력 내가 hdisk 이름을 포함하는 첫 번째 열을하고자합니다. 나는 모든 줄에있는 hdiskXX 뒤에 모든 것을 지우고 싶다. XX은 1-3 자리, 대부분 2 자리가 될 수 있습니다.hdisk[0-9][0-9].*

바꾸기 : :

나는 다음과 같은 정규 표현식을

찾기 시도 hdisk[0-9][0-9]

을하지만 결과 문자열은 hdisk[0-9][0-9] 대신 hdisk10 같다. 왜 정규식으로 [0-9]을 해석하지 않고 문자 그대로 취급합니까?

내가 원하는 것을 얻기 위해 어떤 정규 표현식을 사용해야합니까?

정규식 검색 및 바꾸기를 지원하는 Notepad ++에서이 작업을 시도하고 있습니다.

+0

'capture'가 필요합니다. – neevek

+0

그래, 포획해야 해. 대체에 범위를 지정할 수는 없지만 의미가 없습니다. "숫자로 대체하십시오 [0-9]"- 그냥 하나 만들 생각입니까? ;) – delicateLatticeworkFever

+0

필자는 메모장 ++을 사용하지 않지만이 간단한 명령으로'awk'를 사용하여 원하는 것을 얻을 수 있습니다 :'awk '{print $ 1}'infile' – neevek

답변

3

캡쳐 그룹을 사용해야합니다. (hdisk[0-9]+).*에 침착하여 \1으로 교체하십시오.

\1을 의미하며 "첫 번째 괄호 안에있는 내용은 모두"입니다.

(참조 : http://ozansafi.wordpress.com/2008/12/11/notepad-regular-expression-usage/)

+0

감사합니다. 이 캡처 메커니즘을 설명하는 좋은 문서를 가르쳐 주시겠습니까? –

+0

당신은이 기사를보실 수 있습니다 : http://www.regular-expressions.info/brackets.html 인터넷에 수십 가지가 있습니다 :) –

+0

@Stacker, 참고 문헌을 추가했습니다 :-) – aioobe

1

그것은 매우 일반적입니다 만 작동합니다. \s+\d+\s+200B.*을 찾아 빈 문자열로 대체하십시오. \ d와 +를 메모장에서 사용할 수 있는지 확실하지 않습니다. ++ ... 직접 확인하십시오.

+0

친절하게 당신 수 있습니까? 귀하의 정규식이 무엇을 설명? –

+0

양수의 공백 (1 개 이상)과 양수의 자릿수가 뒤따라 나오는 양수의 공백 옆에 ​​200B로 시작하는 문자열과 그 뒤에 오는 문자가옵니다. 이 경우 작동하지만보다 복잡한 상황을 상상할 수 있습니다. 그러면 aioobe의 접근 방식이 더 합리적으로 보입니다. –

관련 문제