-
- 1. 개요
-
- 2. 간단한 텍스트 치환
-
-
- 2.1. "morning"을 "evening"으로
-
- 2.2. 대소문자 구분 없이
-
3. 찾을 문자열에 정규 표현식 사용
-
-
- 3.1. "morning" 또는 "afternoon"을 "evening"으로
-
- 3.2. "{{{c"를 "{{{cpp"로
-
4. 치환할 대상을 동적으로 바꿈
-
-
- 4.1. "{{{perl"을 "{{{#!vim perl"로
-
- 4.2. "morning"을 "MORNING"으로, "evening"을 "EVENING"으로
-
- 4.3. 매크로의 인자 위치 바꾸기
-
5. 관련 링크
-
- 6. 사용자 의견
-
/문자열일괄치환 기능을 사용해서 모든 페이지에서 원하는 문자열을 찾아서 바꾸는 예문을 적어둔다. 그래야 유즈모드ext버전의 훌륭함을 널리 알릴 수 있다주인장도 나중에 또 필요할 때 참고할 수 있다.
Perl/정규표현식을 알면 알수록 편하다.
2. 간단한 텍스트 치환
2.1. "morning"을 "evening"으로
모든 페이지에 있는 "morning"이라는 문자열을 "evening"으로 바꾸고자 한다.
뭐 당연히,
Old: morning
New: evening
그 외 옵션 전부 off
정확히 "morning"이라는 단어만 "evening"으로 바뀐다.
2.2. 대소문자 구분 없이
Morning, morNIng, MORNING, 가리지 않고 전부 evening으로 바꾸고 싶다면 "Ignore case" 옵션에 체크하면 된다.
Old: morning
New: evening
Ignore case : on
3. 찾을 문자열에 정규 표현식 사용
/문자열일괄치환 화면에서 "Use regular expression" 옵션을 체크하면 Old string 필드에 Perl/정규표현식을 쓸 수 있다. 정규표현식 상태에서는 다음 캐릭터들은 특별한 의미를 지닌다.
- [ ] { } ( ) ^ $ | * ? + . 이 외에도 이것저것
- 따라서 이 캐릭터 자체를 검색하고 싶을 때는 "\["와 같이 백슬래쉬를 앞에 붙여야 한다. 백슬래쉬를 검색하고 싶으면 "\\"
3.1. "morning" 또는 "afternoon"을 "evening"으로
물론 "morning"을 "evening"으로 바꾸고 다시 "afternoon"을 "evening"으로 또 바꿔도 되지만... :-)
Old: morning|afternoon "|"는 OR의 의미이다.
New: evening
Use regular expression: on
3.2. "{{{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) 괄호를 써서 그룹을 지어 줌
4. 치환할 대상을 동적으로 바꿈
4.1. "{{{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"이라고 치환된다.
4.2. "morning"을 "MORNING"으로, "evening"을 "EVENING"으로
이런 치환이 필요할 일이 흔하지야 않겠지만...
Evaluate 옵션을 켜면, 다른 함수를 호출할 수도 있다.
Old: (morning|evening)
New: uc($1) uc()는 인자로 받은 문자열을 대문자로 바꿔서 반환하는 함수
Use regular expression: on
Evaluate: on
4.3. 매크로의 인자 위치 바꾸기
<blog_includeperiod(Diary/List,2007-01-01,2007-01-31)> 이걸 뒤의 날짜를 서로 바꿔서
<blog_includeperiod(Diary/List,2007-01-31,2007-01-01)> 이렇게 바꾸고 싶다면
Old: (<blog_includeperiod\(Diary/List,)(.+?),(.+?)\)> 매크로 자체에 있던 괄호는 백슬래쉬를 붙여줘야 함
New: $1.$3.','.$2.')>' 두번째 괄호와 세번째 괄호에 해당하는 내용의 순서를 바꿔준다
마침표는 좌우의 문자열을 연결하라는 의미
Use regular expression: on
Evaluate: on
5. 관련 링크
6. 사용자 의견
위키위키분류 컴퓨터분류