UseModWiki소스수정/문자열일괄치환예시 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/문자열일괄치환예시 는 읽기 전용 페이지입니다.
== # 개요 == [[/문자열일괄치환]] 기능을 사용해서 모든 페이지에서 원하는 문자열을 찾아서 바꾸는 예문을 적어둔다. 그래야
유즈모드ext버전의 훌륭함을 널리 알릴 수 있다
주인장도 나중에 또 필요할 때 참고할 수 있다. [[Perl/정규표현식]]을 알면 알수록 편하다. == # 간단한 텍스트 치환 == === # "morning"을 "evening"으로 === 모든 페이지에 있는 "morning"이라는 문자열을 "evening"으로 바꾸고자 한다. 뭐 당연히, {{{ Old: morning New: evening 그 외 옵션 전부 off }}} 정확히 "morning"이라는 단어만 "evening"으로 바뀐다. === # 대소문자 구분 없이 === Morning, morNIng, MORNING, 가리지 않고 전부 evening으로 바꾸고 싶다면 "Ignore case" 옵션에 체크하면 된다. {{{ Old: morning New: evening Ignore case : on }}} == # 찾을 문자열에 정규 표현식 사용 == [[/문자열일괄치환]] 화면에서 "Use regular expression" 옵션을 체크하면 Old string 필드에 [[Perl/정규표현식]]을 쓸 수 있다. 정규표현식 상태에서는 다음 캐릭터들은 특별한 의미를 지닌다. * [ ] { } ( ) ^ $ | * ? + . 이 외에도 이것저것 * 따라서 이 캐릭터 자체를 검색하고 싶을 때는 "\["와 같이 백슬래쉬를 앞에 붙여야 한다. 백슬래쉬를 검색하고 싶으면 "\\" === # "morning" 또는 "afternoon"을 "evening"으로 === 물론 "morning"을 "evening"으로 바꾸고 다시 "afternoon"을 "evening"으로 또 바꿔도 되지만... :-) {{{ Old: morning|afternoon "|"는 OR의 의미이다. New: evening Use regular expression: on }}} === # "{{{c"를 "{{{cpp"로 === 단순하게 바꾸어 버리면, 기존에 있던 "{{{cpp"가 "{{{cpppp"가 되어 버리는 문제가 있다. 여러 가지 방법이 있겠지만, 간단하게는 "{{{c 또는 {{{cpp 를 {{{cpp 로" 바꾸면 되겠다. {{{ Old: \{\{\{cpp|\{\{\{c New: {{{cpp New string 쪽에는 "\{"라고 적어주지 않아도 된다. Use regular expression: on }}} 이 때 주의할 점은 cpp를 "|"의 왼쪽에 써야 한다. c|cpp 라고 쓰면 "cpp"라는 문자열을 봤을때 첫글자 c가 정규표현식의 c와 일치하기 때문에 결국 "cpppp"가 되어 버린다. 위의 예에서 "\{\{\{"가 중복해서 나오니까, 아래와 같이 쓸 수도 있다. {{{ Old: \{\{\{(cpp|c) 괄호를 써서 그룹을 지어 줌 }}} == # 치환할 대상을 동적으로 바꿈 == === # "{{{perl"을 "{{{#!vim perl"로 === 단지 perl에 대해서만 그렇게 바꾼다면 단순 치환을 하면 되지만, 여러 가지 언어에 대해 전부 동일한 형태로 바꿔주고 싶다면? {{{ {{{perl -> {{{#!vim perl {{{cpp -> {{{#!vim cpp {{{java -> {{{#!vim java }}} 물론 각각에 대해 단순 치환을 반복해도 되지만, 어딘가 {{{javascript 가 숨어 있는 걸 잊었을 수도 있고... {{{ Old: \{\{\{([A-Za-z]+) New: {{{#!vim $1 Use regular expression: on Evaluate: on }}} * "[A-Za-z]"는 A,B,...,Z,a,b,...,z 즉 "알파벳 대소문자 중 하나"를 의미한다. * "+"는 "하나 이상"을 의미한다. * 따라서 "[A-Za-z]+"는 "c" "cpp" "java" "javascript" "perl" 기타 등등 알파벳으로만 이뤄진 하나의 단어가 된다. * 이걸 괄호로 묶은 후 * New string 쪽에서 $1이라고 적어주면, "저 괄호 안의 표현식에 해당하는 문자열"을 의미한다. 괄호쌍이 둘 이상 있으면 왼쪽부터 "("를 세어서 순서대로 $1, $2, ... 에 들어간다. * 이 때 "Evaluate"옵션을 켜 주어야, $1이 그런 의미로 해석된다. 옵션이 꺼져 있다면 "{{{perl"은 단순히 "{{{#!vim $1"이라고 치환된다. === # "morning"을 "MORNING"으로, "evening"을 "EVENING"으로 === 이런 치환이 필요할 일이 흔하지야 않겠지만... Evaluate 옵션을 켜면, 다른 함수를 호출할 수도 있다. {{{ Old: (morning|evening) New: uc($1) uc()는 인자로 받은 문자열을 대문자로 바꿔서 반환하는 함수 Use regular expression: on Evaluate: on }}} === # 매크로의 인자 위치 바꾸기 === {{{
이걸 뒤의 날짜를 서로 바꿔서
이렇게 바꾸고 싶다면 }}} {{{ Old: (
매크로 자체에 있던 괄호는 백슬래쉬를 붙여줘야 함 New: $1.$3.','.$2.')>' 두번째 괄호와 세번째 괄호에 해당하는 내용의 순서를 바꿔준다 마침표는 좌우의 문자열을 연결하라는 의미 Use regular expression: on Evaluate: on }}} == # 관련 링크 == * [[Perl/정규표현식]] * [[Vi로문자열치환하기]] == # 사용자 의견 ==
---- [[위키위키분류]] [[컴퓨터분류]]
UseModWiki소스수정/문자열일괄치환예시
페이지로 돌아가기 |
다른 수정본 보기