모듈:멀티 치환
Module| 이 Lua 모듈은 약 591,000페이지(전체 페이지의 약 1%)에서 사용됩니다. 중대한 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.변경을 실장하기 전에 토크 페이지에서 변경에 대해 논의해 주십시오. |
| 이 모듈은 다음 다른 모듈에 의존합니다. |
특정 문자열 내의 여러 패턴의 일치를 지정된 치환으로 바꿉니다.각 치환 인스턴스에 대해 가장 낮은 위치의 패턴 매칭이 선택됩니다.이러한 패턴이 여러 개 있는 경우 패턴 목록에서 가장 먼저 지정된 패턴이 선택됩니다.
사용.
{{#제외:MultiReplace 메인 입력 플레인=예(옵션) 패턴1 교체1 패턴2 교체2...}} 한다면plain=yes를 지정하면 패턴과 치환이 플레인텍스트로 처리됩니다.그 이외의 경우는 Lua Unicode 패턴으로 처리됩니다.
p = {} 현지의 기능. 멀티 치환(args) 현지의 입력 = args[1] 또는 "{{{1}}}" 현지의 평지 = args.평지 == "네" 현지의 i = 1 현지의 변경 리스트 = {} 하는 동안에 args[i * 2] 하다 현지의 바꾸다 = {양식 = args[i * 2], 리플리케이트 = args[i * 2 + 1]} 한다면 것은 아니다. 바꾸다.리플리케이트 그리고나서 돌아가다 요구하다('모듈:에러').에러{ '멀티 치환:페어링되지 않은 인수: <code>' .. (i * 2) .. ' = ' .. 바꾸다.양식 .. '/code>' } 끝. 변경 리스트[i] = 바꾸다 i = i + 1 끝. 현지의 match List(일치 리스트) = {} 현지의 포스 = 1 현지의 렌 = 음.스트링.렌(입력) 현지의 결과 = "" 하는 동안에 포스 <=> 렌 하다 현지의 베스트 스타트 = 렌 + 1 현지의 최적의 정지 = 렌 현지의 최적의 변경 위해서 _, 바꾸다 에 아이페어(변경 리스트) 하다 현지의 개시하다, 이제 그만 = 음.스트링.발견하다(입력, 바꾸다.양식, 포스, 평지) 한다면 개시하다 그리고. (개시하다 < > 베스트 스타트) 그리고나서 베스트 스타트 = 개시하다 최적의 정지 = 이제 그만 최적의 변경 = 바꾸다 끝. 끝. 결과 = 결과 .. 음.스트링.후보선수(입력, 포스, 베스트 스타트 - 1) 한다면 최적의 변경 그리고나서 현지의 파편 = 음.스트링.후보선수(입력, 베스트 스타트, 최적의 정지) 결과 = 결과 .. (평지 그리고. 최적의 변경.리플리케이트 또는 음.스트링.서브(파편, 최적의 변경.양식, 최적의 변경.리플리케이트, 1)) 끝. 포스 = 최적의 정지 + 1 끝. 돌아가다 결과 끝. 기능. p.주된(틀, ...) 현지의 args = 유형(틀) ~= '테이블' 그리고. {틀, ...} 또는 유형(틀.args) ~= '테이블' 그리고. 틀 또는 틀.args[1] 그리고. 틀.args 또는 틀:부모 취득().args 돌아가다 멀티 치환(args) 끝. 돌아가다 p