2012-02-23 2 views
2

내 질문에 약간 어색한 점이 있으면 용서해주십시오. 스칼라에 할당 된 값에 영향을주지 않으면 서 perl 소스 파일의 행 번호를 대치 할 정규 표현식을 찾고 있습니다.스칼라에 할당 된 값이 아닌 문자열을 대체 할 정규 표현식

아래 질문을 통해 좀 더 명확해질 것입니다.

1. $foo = 2.4; 
2. print $foo; 

내가 스칼라에 할당 된 값에 영향을주지 않고 그 줄 번호 (1. 2. etc..)를 대체하는 정규 표현식을 좋아하고,이 경우 $foo에있는 것 :이처럼 보이는 펄 소스를 말해봐.

감사

+0

기본 질문처럼 들리겠습니까? –

+0

글쎄, 줄 번호와 스칼라 지정의 차이점은 무엇입니까? "행 번호가 항상 행의 시작 부분에 있고 스칼라 지정이 아닌"경우, 정규 표현식은 매우 쉽습니다.'s/^ \ d //;'는 시작 부분에서만 모든 숫자를 제거합니다 선. – Konerak

답변

4

당신은 시작을 나타내는 캐럿 기호 ^을 사용할 수 있습니다 줄의. $은 행의 끝을 나타냅니다. 이것을 앵커라고합니다. 당신이

에서 당신이 아무것도를 "대체"할 수 있습니다 그 숫자를 제거하고 싶다면

그래서 당신이

/^\d+/ 

검색 할 수있는 라인 (전용)의 시작 부분에 숫자 \d를 찾을 수

s/^\d+//g 

숫자 뒤에 점이 포함되기를 원하므로 을 시도해보십시오.

/^\d+./ 

그러나 정규식에 점 "모든 문자"는 점을 탈출해야합니다 그래서 말 그대로

/^\d+\./ 

캐럿 기호 해석 가질 수를 나타냅니다 ^ 또한 문자 세트에서 더블 의무를 (제공 그것은 그들을 부정합니다), 나는 정규 표현식을 배우는 것이 혼란의 공통 원인이기 때문에 이것을 언급합니다.

/[^\d]/ # Match characters that are not digits 
5

앵커 라인의 시작에 당신의 정규 표현식 : 숫자 제거

: 펄 정규식 내에서

perl -p -i.bak -e's{^\d+\. }{}' myperl