정규표현식 질문입니다.

maxter의 이미지

안녕하세요.

C로 작성된 소스를 전체적으로 replace해야 할 일이 생겼습니다.
L"abcdefg" 를 _T("abcdefg") 이렇게 말이죠.

"abcdefg"를 살려서 '_T(' 과 ')' 만을 앞뒤로 넣어줄 방법이 없을까요?

도움을 부탁드립니다.

송효진의 이미지

일반적으로 pattern 규칙에서 괄호를 씌우면, replacement 에서 \1 \2 처럼 \숫자 로 받을 수 있습니다. 괄호 씌운 순서대로 숫자가 매겨집니다.

paperplane의 이미지

결국 L" ..... " 패턴을

_T(" .... ") 로 바꾸시겠다는 거죠? (맞나요?)

vi 를 쓰신다면

:%s/L"\(.*\)"/_T\("\1"\)/g

이렇게 하시면 될 거 같네요...

gitagy의 이미지

L"우리나라" 를 _T("우리나라") 로 변경 하기

인라인 펄로 다음과 같이 할수 있습니다.

perl -pi -e 's/L"(.+)"/_T\("\1"\)/' [filename]

근데! 한가지 문제가 있습니다.
정규식에서 .+ 때문에 라인에서 line feed가 오기전에 변경대상이 여러번 있다면 여러개를 하나로 뭉쳐서 처리해 버린다는 겁니다.

더블쿼터안에 영문+숫자만 존재한다면 [A-Za-z0-9]+ 로 지정하면 해결되고 아니라면 명령어의 마지막 / 뒤에 패턴 변경자를 지정하여 "작은 일치 우선"을 할수도 있는데 변경자가 기억이 안납니다. :(

raymundo의 이미지

gitagy wrote:

근데! 한가지 문제가 있습니다.
정규식에서 .+ 때문에 라인에서 line feed가 오기전에 변경대상이 여러번 있다면 여러개를 하나로 뭉쳐서 처리해 버린다는 겁니다.

더블쿼터안에 영문+숫자만 존재한다면 [A-Za-z0-9]+ 로 지정하면 해결되고 아니라면 명령어의 마지막 / 뒤에 패턴 변경자를 지정하여 "작은 일치 우선"을 할수도 있는데 변경자가 기억이 안납니다. :(

다른 경우는 모르겠고, Perl 이라면 *,?,+ 의 뒤에 다시 ?를 붙여서 (*?, ??, +?) 말씀하신 "작은 일치 우선"을 지정할 수 있습니다.

좋은 하루 되세요!

송효진의 이미지

/U 혹은 (?U) 가 작은 일치 우선 입니다.

그리고 "(.+)" 의 경우는 "([^"]+)" 로 하는게 간단할것 같네요. :lol:

gitagy의 이미지

송효진 wrote:
/U 혹은 (?U) 가 작은 일치 우선 입니다.

그리고 "(.+)" 의 경우는 "([^"]+)" 로 하는게 간단할것 같네요. :lol:

효진님 원츄입니다 :)

안그래도 NOT 연산자가 뭘까 몹시 궁금해 하던 차였습니다.
그런데 인라인 펄이라서 그렇다고는 생각하고 싶지 않지만 U는 안먹히더군요

p.s 저두 젠투 좋아라 합니다. :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.