특정단어를 찾아바꾸는 정규표현식에 관련 질문 드립니다.
글쓴이: centos / 작성시간: 일, 2009/07/05 - 9:05오후
안녕하세요. 가끔 글올리는 시스템se 입니다 ㅡㅡ;
정규표현식 관련 질문하나 드리겠습니다~
perl -p -i -e 's/asdf/read/g' aa.txt //asdf 라는 문자열을 read 로 바꾼다~
위의식의 정규표현식을 알고 있습니다만~
만약 문서파일의 msg(mysql_error()) 라는 문자열을 모두 지우고 싶다면 어떤식으로 정규표현식을 써야 하나요?
perl -p -i -e 's/msg(mysql_error())//g' aa.txt
위의 식은 역시나 안먹히더라구요~
도와주시면 감사하겠습니다
Forums:
괄호 처리
괄호앞에다가 모두 역슬래쉬 처리해줘야 해보시길 바랍니다.
답변감사합니다만~
안녕하세요.~
답변 무지하게 감사합니다만~
님의 답변은 종전에 해본적이있으나..
되지 않았었습니다 ㅠ.ㅠ
괄호 안에 들어가는 문자들을 생각 안하셔서 그런듯...
aa.txt라는 곳이 만일 다음과 같이 구성되어 있다면...
다음 치환 코드로는 "Test1"과 같은 괄호안의 문자에 대한 매치가 없기 때문에 해당 문장이 없다고 판단하게 될 것이고 변환이 이루어지지 않는 것은 당연합니다.
해서 다음과 같이 괄호 안에 적당한 매치를 더 넣어줘야 합니다. 그래서 ".*?"를 넣었습니다.
이렇게 하면 해당 영역을 공백으로 만들고 빈 라인으로 만들어 줄겁니다.
만일 괄호안의 문자로 치환해야 한다면 다음과 같이 하시면 되겠죠.
음 뭐 제가 해보지는
음 뭐 제가 해보지는 않았습니다만,
우려가 되는 것이 있는데요 ..
. 이 )에는 매치되지 않나요 ?..;
그리고 *가 zero match도 허용될것 같아서
? 는 왠지 없어도 될 것 같습니다만 ..;
'.*'은 당연히 괄호
'.*'은 당연히 괄호 문자 모두 매치 됩니다.
'?'을 붙였기 때문에 일단 닫힘 괄호가 2개 나오기 전까지는 모두 매치 시키겠죠.
만일 닫힘 괄호 2개 연속 나오는 것이 라인 마지막에 나오고, 중간에 닫힘 괄호 2개가 들어갈 수 있는 문장이라면 '?'를 빼면 됩니다.
네, 설명
네, 설명 감사드립니다. ^^
? 의 해석이 여기서는 어디까지 해석하는지에 영향을 주는군요.
답변감사!
답변 감사드립니다~
댓글 달기