문자열 찾고 수정하기
본문
$tmp = '
-- 1/7회 출력
Trigger {
players = {P7},
conditions = {
Deaths(P12, AtLeast, 1, 3);
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Deaths(P10, AtLeast, 1, 9);
},
actions = {
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P10, SetTo, 0, 9); -- 랜덤 타이머 초기화
SetDeaths(Force1, SetTo, 1, 181); -- 사운드 유닛
SetScore(Force1, Add, 30000, Kills);
SetResources(Force1, Add, 1, Gas);
Wait(25);
CreateUnit(1, "Terran Valkyrie", "[G] H5", P1); -- 유닛 생성
SetDeaths(Force1, SetTo, 0, 181); -- 사운드 유닛
}
}
-- 2/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Infested Duran", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
Deaths(P12, AtLeast, 1, 3);
Deaths(P12, AtLeast, 1, 10); -- 난이도
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
Deaths(P10, AtLeast, 68, 9); -- 타이머
}, {
Comment(" ");
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
hitpoint = 100,
shield = 100,
hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 3/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Unclean One (Defiler)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
Deaths(P12, AtLeast, 1, 3);
Deaths(P12, AtLeast, 1, 10); -- 난이도
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
Deaths(P10, AtLeast, 119, 9); -- 타이머
}, {
Comment(" ");
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
hitpoint = 25,
shield = 25,
hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 4/7회 출력
local BdS2 = CSMakeStar(5, 108, 96, 0, 31, 1);
CSPlotOrderWithProperties(BdS2, P7, "Protoss Scout", "[G] H5", nil, 1, 16, CS_Shuffle(BdS2), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
Deaths(P12, AtLeast, 1, 3);
Deaths(P12, AtLeast, 1, 10); -- 난이도
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
Deaths(P10, AtLeast, 170, 9); -- 타이머
}, {
Comment(" ");
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
hitpoint = 25,
shield = 25,
hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 5/7회 출력
local BdS2 = CSMakeStar(5, 108, 96, 0, 31, 1);
CSPlotOrderWithProperties(BdS2, P7, "Kukulza (Mutalisk)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS2), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
Deaths(P12, AtLeast, 1, 3);
Deaths(P12, AtLeast, 1, 10); -- 난이도
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
Deaths(P10, AtLeast, 221, 9); -- 타이머
}, {
Comment(" ");
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
hitpoint = 100,
shield = 100,
hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 6/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Fenix (Zealot)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
Deaths(P12, AtLeast, 1, 3);
Deaths(P12, AtLeast, 2, 10); -- 난이도
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
Deaths(P10, AtLeast, 272, 9); -- 타이머
}, {
Comment(" ");
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
hitpoint = 25,
shield = 25,
hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 7/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Tassadar (Templar)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
Deaths(P12, AtLeast, 1, 3);
Deaths(P12, AtLeast, 3, 10); -- 난이도
Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
Deaths(P10, AtLeast, 323, 9); -- 타이머
}, {
Comment(" ");
CreateUnit(1, "Protoss Observer", "[G] H5", P7);
KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
SetDeaths(P12, SetTo, 1, 35); -- 라바제거
RemoveUnitAt(0, "Terran Valkyrie", "[G] H5", P1);
}, 0, {
hitpoint = 25,
shield = 25,
hanger = 10
});
---------------------------------------------------------------------------------------------------
';
이런 문구가 있는데.
Deaths(P10, AtLeast, << -- 전영역 타이머 부분에 값을 가져오고 -1을 하여 전부다 이어 붙히고 싶습니다.ㅠ
어떻게 해야될까요..?
답변 3
Deaths(P10, AtLeast, 1, 9)
↓ 고정 문자열에서 Escape 처리, 변경되는 부분 패턴, 괄호 묶기
Deaths\(P10, AtLeast, (\d+), 9\)
이제 이 부분값에서 1 빼서 치환해주면 끝이죠.
$tmp = preg_replace_callback('/Deaths\(P10, AtLeast, (\d+), 9\)/', function ($m) {
return 'Deaths(P10, AtLeast, '.($m[1]-1).', 9)';
}, $tmp);
// 익명 함수 사용할 수 없는 옛날 버전이면 아래처럼 따로 처리하면 됩니다.
function change_value($m) {
return 'Deaths(P10, AtLeast, '.($m[1]-1).', 9)';
}
$tmp = preg_replace_callback('/Deaths\(P10, AtLeast, (\d+), 9\)/', 'change_value', $tmp);
이건 무슨 언어에요 ㅋㅋㅋ 본적 없는데
정보감사합니다