리버티게임:관리자 가이드/1강
찾아바꾸기란, 자신이 원하는 대로 단어를 싹 갈아엎어버리는 것입니다. 예를 들면 백괴사전 문장을 리버티게임 문장으로 바꾸고 싶을 때도 사용합니다.
리버티게임에서는 정규표현식을 사용하여 여러 문서에 존재하는 같은 단어나 내용을 바꿀 수 있습니다.
기초[원본 편집]
가령 백괴사전 문장을 리버티게임으로 바꾸고 싶다면,
- 특수:대량편집정규식으로 이동합니다.
- 편집할 문서를 선택합니다.
- 특정 문서에서만 찾아바꾸고 싶다면, 문서 제목을 편집할 문서 란에 입력하고 문서 이름에 체크합니다.
- 특정 이름공간이나 특정 문서의 하위문서에서만 찾아바꾸는 등 특정 문자열로 시작하는 문서일 경우, 시작하는 문자열을 편집할 문서 란에 입력하고 문서 이름 접두어에 체크합니다.
- 특정 분류에 속한 문서를 찾아바꾸고 싶다면, 분류의 이름을 편집할 문서 란에 입력하고 분류 이름에 체크합니다.
- 문서를 이동할 때와 같이 특정 문서로 향하는 링크가 포함된 문서를 찾아바꾸고 싶다면, 링크가 향하는 문서의 이름을 편집할 문서 란에 입력하고 백링크에 체크합니다.
- 검색 대상 란에 있는 두개의 / 사이에 백괴사전을 입력합니다.
- 바꾸기 란에 리버티게임을 입력합니다.
- 어느 이름공간에서 찾아바꿀지 결정합니다.
- 요약 란에 찾아 바꾸는 이유를 씁니다.
- 미리 보기를 누릅니다. 다소 시간이 걸립니다.
- 문서들이 나열되면 잘못된 것은 없는지 확인하고, 원하는 대로 수정된다면 실행 버튼을 누릅니다.
심화[원본 편집]
정규표현식을 이용해서 보다 강력한 찾아바꾸기 기능을 사용할 수도 있습니다.
예를 들자면 찾을 문자열에 (.*)사전를 입력하고 바꿀 문자열에 위키$1을 입력하면 백괴사전이 위키백괴로, 백과사전이 위키백과로 바뀝니다.
만일 정규표현식을 잘못 입력하여 여러 문서를 훼손할 것 같다면 정규 표현식으로 대량 편집 특수 문서의 실행 버튼 옆 미리 보기 버튼을 반드시 눌러 최대 20개까지의 문서에서 어떻게 변경되는지 예상 변경 결과를 확인해보아야 합니다. 그래야 실수로 문서를 대량으로 망가뜨리지 않습니다.
축하합니다! 이제 찾아바꾸기 기능을 익히셨습니다! 하지만 여기서 궁금한 것이 있을 겁니다. 정규 표현식은 무엇인가요?
정규 표현식이란?[원본 편집]
정규표현식(Regular Expression)은 단어나 문자의 패턴(Pattern, 문자를 늘어놓은 일정한 순서 정도로 이해하면 됩니다)를 찾아 인식하는 방법으로 쓰는 특수한 문장입니다. 리버티게임이 사용하는 미디어위키는 프로그래밍 언어인 PHP에서 지원하는 정규 표현식으로 특정 단어나 문장을 검색합니다.
정규 표현식을 파고들면 밑도 끝도 없는 응용법을 발견할 수 있기에 이곳에서 전부 설명하지 않습니다. 그러나 사용자가 자주 요청하는 몇몇 요청과 관련된 문법과 예시는 이 문서에서 설명하겠습니다.
패턴 구분자와 메타 문자[원본 편집]
정규표현식은 /을 발견할 때마다 작동을 시작하거나 끝냅니다. 즉 /로 시작하여 /로 끝나는 범위의 글자 검색을 수행합니다. 이것을 패턴 구분자라고 합니다. 특수:대량편집정규식 특수 문서에서는 저 글자를 찾을 단어나 문장의 제일 앞과 끝에 붙여줘야 합니다. 여기서는 그것을 생략하고 설명하겠습니다. 실제로 대량편집정규식 문서를 쓸 때 백괴스럽다라는 단어를 찾으려면 왼쪽의 '검색 대상'에 /백괴스럽다/라고 쓰게 됩니다. (다시 말하지만 저 특수 문서를 쓸 때에는 반드시 검색한 문자열 패턴에 /을 제일 앞과 뒤에 추가로 붙여야 합니다!)
메타 문자는 다른 문자를 인식하기 위해 정규 표현식에서 특별히 구분하는 문자를 말합니다. 아래에 서술할 문자들은 정규표현식이 특정한 동작을 하라는 명령으로 인식하기 때문에 아래 문자가 들어간 단어를 검색할 때에는 주의해야 합니다.
- \
그럼 패턴 구분자 / 및 메타 문자가 들어간 단어는 어떻게 검색할까요? 바로 \ 메타 문자를 사용하면 됩니다. 다른 메타 문자 바로 앞에 이걸 붙이면 정규표현식은 \ 다음에 오는 문자 1개는 메타 문자로 인식하지 않습니다. 그리고 \이란 평범한 문자를 정규 표현식으로 검색하려면 \\이라고 쓰면 됩니다.
- ^
문자열의 첫 부분을 가리키는 메타 문자입니다. 리버티게임에서는 주로 문서의 맨 처음에 어떤 단어를 추가할 때 주로 사용합니다.
- $
문자열의 마지막 부분을 가리키는 메타 문자입니다. 리버티게임에서는 주로 문서의 맨 끝에 어떤 단어를 추가할 때 주로 사용합니다.
- .
모든 문자를 가리킵니다. 리버티게임에서 이 메타 문자를 쓸 일은 사실상 없는데, 그냥 쓰면 여러 문서의 내용 전체를 똑같은 내용으로 바꾸기 때문입니다.
- |
- (
- )
여러 단어를 동시에 찾으려면 |와 ( 및 ) 메타 문자를 활용해야 합니다. 가령 주소창에서 쓰이는 URL은 http://나 https://로 시작하는데 이걸 동시에 찾으려면 (http|https):\/\/ 라고 쓰면 문서 내에 URL이 시작하는 부분을 전부 뽑을 수 있습니다. 또 파라미터를 만들어야 할 때에도 쓰이는데, 그건 다음 문단에 설명하겠습니다.
- [
- ]
검색할 한 개 문자의 유니코드 범위를 지정합니다. 보통 후술할 *, +, ?와 함께 씁니다. 아무 문자든 알파벳 하나를 바꿀 때에는 [A-Za-z], 완성된 한글 문자 하나를 바꿀 때에는 [가-힣], 숫자 한 개는 [0-9]으로 유니코드 범위를 정할 수 있는 경우가 많습니다
- *
- +
- ?
문자의 발생 빈도를 가리킵니다. 정규 표현식이 이들 메타 문자를 보면 *의 경우 0번 이상, +는 1번 이상, ?는 0번 또는 1번 존재하는 문자를 찾습니다. 아마 리버티게임에서 특정 단어를 바꿔 달라는 요청이 들어오면 보통 +를 쓰게 될 것입니다. 가령 양아치라는 표현을 문서에서 찾으려면 (양아치)+로 찾으면 됩니다. 다만 양아치양아치의 경우 앞의 정규 표현식을 쓰면 두 개의 양아치가 아닌 하나의 양아치양아치 단어로 생각하기 때문에 다음에 올 {와 }을 쓰는 것이 조금 더 낫습니다.
- {
- }
그럼 2개 이상 연속으로 나온 글자는 못 찾냐고요? 아니요, 가령 정규 표현식이 () 나 [] 뒤에 {7}과 같은 표현을 찾으면 해당 문자열이 정확히 7번 반복된 부분을 찾으며 뒤에 {3, 5} 같은 표현을 찾으면 해당 문자열이 3번에서 5번 사이로 발생한 부분을 찾습니다. 가령 4444라는 단어를 찾아야 한다면 (4){4}라고 쓸 수 있습니다.
예제를 더 들어볼까요, 무심한 듯 시크와 무시한 듯 시큼을 둘 다 찾으려면 무(심|시){1}한 듯 시(크|큼){1}를 쓸 수 있습니다. 주의할 것은 저 문자열은 무심한 듯 시큼과 무시한 듯 시크도 찾습니다. 만일 앞의 두 구절만 반드시 골라야 한다면 (무심한 듯 시크|무시한 듯 시큼)+이라고 정규 표현식 문장을 쓸 수 있습니다. 다만 이 때 파라미터 기능까지 같이 써야 한다면 상당히 골치 아플 것이고(첫 번째 방법은 파라미터가 2개 생성되나 두 번째 방법은 파라미터가 하나만 생성됨), 그런 경우라면 정규표현식을 지정하기 상당히 어려워지기 때문에 숙련된 정규 표현식 사용자가 아니라면 그냥 문서를 수동으로 편집하는 것이 나을 수도 있습니다.
파라미터[원본 편집]
현재 특수:대량편집정규식에는 기본쪽으로 오른쪽의 '바꾸기:' 박스에 goodbye $1이라는 말이 있습니다. 그중 $1의 정체가 궁금할 겁니다. 그것은 ( )으로 묶인 문자열들을 오른쪽에 파라미터로 넘기고 그 중 첫 번째 괄호 쌍의 내용을 집어넣겠다는 뜻입니다. 위의 무(심|시){1}한 듯 시(크|큼){1}의 경우에는 첫 번째 괄호 안의 심 또는 시를 그대로 오른쪽 문자열에 집어넣기 때문에 무심한 듯 시크를 찾았다면 goodbye 심이 되고 무시한 듯 시큼을 찾았다면 goodbye 시가 됩니다. 만일 (무심한 듯 시크|무시한 듯 시큼)+ 예제를 썼다면 goodbye 무심한 듯 시크 또는 goodbye 무시한 듯 시큼이 될 것입니다.
즉 $ 뒤에 오는 숫자가 ( ) 괄호로 묶인 문자들 중 앞에서 몇 번째에 위치한 것을 파라미터로 넘길 것인지 알려주는 순서를 가리킵니다. 만약 위 예제 중 앞의 방법에서 정규 표현식의 (크|큼) 부분을 파라미터로 넘기려면 $2를 쓰면 됩니다.
특수 문자[원본 편집]
그런데 문서에는 알파벳과 한글, 아라비아 숫자만 있는 것이 아닙니다. 원래 윈도우 메모장 같은 텍스트 편집기 프로그램의 경우 줄을 바꾸거나 탭 버튼으로 들여쓰기를 할 때에도 사실 문자를 입력합니다.
다행히도, 리버티게임 같은 미디어위키 사이트에서는 보통 \n 과 \s만 알고 있으면 됩니다. 이 글자들은 각각 줄바꿈과 공백을 나타내며, 이 글자를 정규 표현식에 넣어 여러 줄과 띄어쓰기가 쓰인 문장을 찾을 수 있게 합니다.
그런데 이것은 \으로 시작하기에, 정규 표현식 \\n의 결과가 궁금할 것입니다. 결과는 그냥 \과 n로 이루어진 한 단어를 찾습니다.